Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-11-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question ¿subquerys una duda?

hola tengo 2 tablas
una pedimentos que tiene informacion de los pedimentos realizados y un campo UCODADUANA
que uso como ancla. para llamar el nombre de la aduana[ADUANA] que esta en la tabla aduanas
Código SQL [-]
CREATE TABLE PEDIMENTOS (
  ID                     INTEGER NOT NULL,
  RFC_PERTENECE_EMPRESA  VARCHAR(30),
  CODIGO                 VARCHAR(30),
  UCODADUANA             CHAR(50),
  PEDIMENTONUM           CHAR(100),
  PEDIMENTOFECHA         TIMESTAMP,
  STATUS                 INTEGER,
  /* Keys */
  CONSTRAINT PK_PEDIMENTOS
    PRIMARY KEY (ID)
);


CREATE TABLE ADUANAS (
  ID                     INTEGER NOT NULL,
  RFC_PERTENECE_EMPRESA  VARCHAR(30),
  CODIGO                 VARCHAR(30),
  ADUANA                 CHAR(50),
  STATUS                 INTEGER,
  /* Keys */
  CONSTRAINT PK_ADUANAS
    PRIMARY KEY (ID)
);

y este query lo uso para unir el pedimento por si codigo unico
con el nombre de la aduana. y funciona.

Código SQL [-]
SELECT PEDI.ID, PEDI.RFC_PERTENECE_EMPRESA, PEDI.CODIGO, PEDI.UCODADUANA, PEDI.PEDIMENTONUM, PEDI.PEDIMENTOFECHA,PEDI.STATUS,
  (SELECT ADU.ADUANA FROM ADUANAS ADU WHERE ADU.CODIGO = PEDI.UCODADUANA   AND
  ADU.RFC_PERTENECE_EMPRESA = 'NWM9709244W4' )
FROM
  PEDIMENTOS PEDI
  where
  PEDI.RFC_PERTENECE_EMPRESA = 'NWM9709244W4'
  and 
  PEDI.CODIGO = 'NWMPEDIMENTOS0003'

mi problema es que no entiendo bien si un subquery,
solo puede mostrar 1 campo

(SELECT ADU.ADUANA FROM ADUANAS
o acepta mas con mas campos, me da error.


(SELECT ADU.ADUANA, ADU.CODIGO, ADU.STATUS

Código Delphi [-]
Engine Error (code = 335544569):
Dynamic SQL Error.
SQL error code = -104.
Invalid command.
count of column list and variable list do not match.

SQL Error (code = -104):
Invalid token.

no entiendo a que lista de columna no ajusta
count of column list and variable list do not match.

gracias. por su tiempo.
Responder Con Cita
  #2  
Antiguo 26-11-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
No puedes poner más de un campo en la Subconsulta para mostrar un campo, efectivamente te da error, porque es erroneo lo que has puesto, y el motor de SQL protesta y con razón.

Prueba con esto:
Código SQL [-]
SELECT
    PEDI.ID
    ,PEDI.RFC_PERTENECE_EMPRESA
    ,PEDI.CODIGO AS CODIGOPEDI
    ,PEDI.UCODADUANA
    ,PEDI.PEDIMENTONUM
    ,PEDI.PEDIMENTOFECHA
    ,PEDI.STATUS
    ,ADU.ADUNA
    ,ADU.CODIGO AS CODIGOADU
    ,ADU.STATUS
  FROM Pedimentos AS PEDI
    INNER JOIN Aduanas AS ADU
      ON ADU.CODIGO = PEDI.CODIGO
  WHERE PEDI.RFC_PERTENECE_EMPRESA = 'NWM9709244W4'
        AND PEDI.CODIGO = 'NWMPEDIMENTOS0003'

Última edición por olbeup fecha: 26-11-2011 a las 14:05:56.
Responder Con Cita
  #3  
Antiguo 26-11-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

La solución que te han dado es la más eficiente para este problema. Pero si por alguna razón prefieres las subconsultas a enlazar tablas, entonces solo tienes que poner 3 subconsultas, en lugar de una sola, y en cada subconsulta devuelves uno de los campos que necesitas.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 26-11-2011
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
super.. muchas gracias a ambos. olbeup y guillotmarc.

areglada la aquery sale asi.

Código SQL [-]
SELECT
     PEDI.ID 
    ,PEDI.RFC_PERTENECE_EMPRESA  
    ,PEDI.CODIGO AS CODIGOPEDI  
    ,PEDI.UCODADUANA ,PEDI.PEDIMENTONUM
    ,PEDI.PEDIMENTOFECHA
    ,PEDI.STATUS
    ,ADU.ADUANA
    ,ADU.CODIGO AS CODIGOADU
    ,ADU.STATUS
  FROM Pedimentos AS PEDI 
      INNER JOIN Aduanas AS ADU
      ON ADU.CODIGO = PEDI.UCODADUANA
  WHERE PEDI.RFC_PERTENECE_EMPRESA = 'NWM9709244W4'
        AND PEDI.CODIGO = 'NWMPEDIMENTOS0003'
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Duda con PHP Ilrodri Conexión con bases de datos 5 27-10-2010 04:18:50
Duda no Try..Except Paulao Varios 7 13-08-2008 19:24:55
Una Duda sdiaz1983 Varios 4 22-09-2007 16:39:40
Duda con ADO Ivan_25 C++ Builder 4 09-11-2005 10:02:00
duda empty Varios 4 05-05-2004 16:56:07


La franja horaria es GMT +2. Ahora son las 03:52:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi