Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-02-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Duda con SQL SELECT

Hola amigos, vengo trabajando mucho tiempo con Access y nunca habia tenido problemas. Ya empece con SQL Server Express 2005 y me encuentro que cuando hago esta clausula:

Código SQL [-]
SELECT a.*,b.idObra FROM ObraVarios a,Obras b WHERE a.idObra=b.idObra
Yo creo que tendria que devolverme los siguientes campos:
- Value
- Concepto
- A.idObra
- B.idObra

Pero me esta devolviendo estos campos:
- Value
- Concepto
- idObra
- idObra_1

Al final el resultado no es el deseado, me devuelve todos los records de
ObraVarios.
Alguien sabe el porque??
GRACIAS
Responder Con Cita
  #2  
Antiguo 14-02-2008
Avatar de PeterPunk
PeterPunk PeterPunk is offline
Miembro
 
Registrado: ene 2008
Ubicación: Vigo
Posts: 22
Poder: 0
PeterPunk Va por buen camino
Aparentemente está bien. Vamos, que yo creo que en Oracle funciona como indicas.

De todas formas prueba de este otro modo:
Código SQL [-]
SELECT a.*, b.idObra
FROM ObraVarios a INNER JOIN Obras b
ON a.idObra=b.idObra
Responder Con Cita
  #3  
Antiguo 14-02-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Probe lo que me dijistes y nada, me devuelve lo mismo:

idObra
idObra_1

Otra sugerencia??
Responder Con Cita
  #4  
Antiguo 14-02-2008
Avatar de PeterPunk
PeterPunk PeterPunk is offline
Miembro
 
Registrado: ene 2008
Ubicación: Vigo
Posts: 22
Poder: 0
PeterPunk Va por buen camino
Ahora que me fijo en la consulta... los valores de b.idObra siempre serán los mismos que los de a.idObra, y como las campos se llaman igual, pues te devuelve un segundo campo idObra_1 que debe ser el b.idObra y lo renombra para evitar conflictos.

Si quisieras cambiar el nombre que se muestra para este campo sería así:
Código SQL [-]
SELECT a.*, b.idObra AS "b.idObra"
FROM ObraVarios a INNER JOIN Obras b
ON a.idObra=b.idObra
Responder Con Cita
  #5  
Antiguo 14-02-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Si, ahora me renombra el nombre.
pero no me hace la condicion y me sigue devolviendo.
En access eso no importa
Cuando haces esa clausula como te dijo te devuelve 2 campos automaticamente:
a.idObra
b.idObra
SQL debiera hacerlo tambien no??
Responder Con Cita
  #6  
Antiguo 14-02-2008
Avatar de PeterPunk
PeterPunk PeterPunk is offline
Miembro
 
Registrado: ene 2008
Ubicación: Vigo
Posts: 22
Poder: 0
PeterPunk Va por buen camino
Cita:
Empezado por paladincubano Ver Mensaje
pero no me hace la condicion y me sigue devolviendo.
No entiendo esto.
Supongo que te devolverá el mismo valor que tiene el idObra de ObraVarios.

Cita:
Empezado por paladincubano Ver Mensaje
Si, ahora me renombra el nombre.
En access eso no importa
Cuando haces esa clausula como te dijo te devuelve 2 campos automaticamente:
a.idObra
b.idObra
SQL debiera hacerlo tambien no??
No sé, hace años que no uso el SQL Server. De todas formas cada gestor de base de datos te devolverá lo que le programaron. Así Access te devuelve los campos como a.idObra y b.idObra, SQL Server como idObra e idObra_1 y me parece que Oracle te devuelve ambos como idObra
Responder Con Cita
  #7  
Antiguo 14-02-2008
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 19
kuan-yiu Va camino a la fama
Pues no que yo sepa. Oracle al menos devuelve el nombre del campo tal cual, sin incluir la tabla o los alias, como mucho si el nombre está repetido le añade "_1".
Responder Con Cita
  #8  
Antiguo 14-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Disculpen que suene atrevido, pero ¿Que necesidad hay de devolver un campo repetido?

Si ya estas mostrando el campo A.idObra para que mostrar el campo B.IdObra si este tiene el mismo valor que el de la tabla anterior (A)?

La SQL debería ser:
Código SQL [-]
select A.*
from A iner join B ON A.idObra = B.idObra

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 14-02-2008
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Si es muy buena todas las sugerencias y en especial la ultima,
Lo que pasa es que en el Grid no me hace el A.idObra=B.idObra
Me pone todos los valores de todas las obras, no se porque no filtra.
Al final he tenido que hacerlo manual.

Código Delphi [-]
....SQL.ADD('....WHERE idObra='+IntToStr(Obras['idObra']));
....SQL.Open;

de todas formas gracias por todo. Si cada vez que programe con SQL tendre estos problemas, pues no se, ninguna de estas cosas me pasaba con base de datos en Access.
Gracias
Responder Con Cita
  #10  
Antiguo 14-02-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
pues que tengas dos campos iguales y que SQL Server te regrese uno agregándole un "_1" para evitar incongruencias, a mi me parece que es más una ventaja que un problema...

Problema es que tengas dos campos iguales con el mismo nombre...

SQL Server es infinitamente mucho mejor que Access para aplicaciones de bases de datos.

P.D. No solo SQL Server, cualquier otro motor de bases de datos es mejor que utilizar Access para una aplicación de bases de datos y multiusuario.
__________________

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 sobre un select (sql) acrophet Conexión con bases de datos 13 16-01-2008 20:24:51
Problema conuna consulta select...not in (select ...) VRO Firebird e Interbase 2 11-08-2005 08:56:35
5 select de 5 tablas diferentes en un select solo sakuragi SQL 6 15-06-2005 18:57:06
Select anidado: Select from (select....) Malon SQL 2 14-10-2004 14:01:24
Select anidado ( Select from select ) Malon Firebird e Interbase 1 05-10-2004 04:14:38


La franja horaria es GMT +2. Ahora son las 08:03:27.


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