Comunidad de diseño web y desarrollo en internet online

Consulta SQL Multitabla

Citar            
MensajeEscrito el 09 Nov 2007 11:53 pm
Tengo dos tablas que se enlazan por un dato, y quier ver los datos de la tabla 1 que no se encuentren enlazados con la tabla 2

Ej:

Código :

tabla1
id  nombre

tabla2
id telefono celular


Quiero ver solo los nombres de las personas que no tengan telefono y celular, osea que en la tabla2 no aparescan.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie
Citar            
MensajeEscrito el 10 Nov 2007 03:02 am
ehh..., no sería mejor tener todo en una misma tabla?
En todo caso algo así te podría servir

Código :

select t1.id from tabla1 as t1 where not exists (select * from tabla2  as t2 where t2.id = t1.id) 
Nose ando algo dormido :zzz: :zzz: ...

Por zickedhelik

93 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Nov 2007 03:26 pm
york3rs el esquema que mencionas es erróneo y espero que solo haya sido un ejemplo (pésimo aún asi), la cosa quedaría así

Código :

select t1.nombre from t1 where not exists(select t2.id from t2 where t1.id=t2-id)


Básicamente con exists y not revisas que no exista el nombre en la tabla2 usando el id para ello. zickedhelik, cargar toda la tabla en el segundo select no es óptimo cuando solo quiere obtener el nombre.

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 10 Nov 2007 04:22 pm
Era solo un ejemlo, en realidad el ejemplo que di es:
Tabla1- 1 a Tabla2- 1
En realidad es:
Tabla1- 1 a Tabla2- *(muchos)

Código :

tabla1 (elementos)
tabla2 (subelementos)
La relacion es Un elemento puede tener 2 o muchos Sub-Elementos


Y lo que necesito saber es que Elemento no tiene sub-elementos.-

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie
Citar            
MensajeEscrito el 12 Nov 2007 01:18 pm
Prueba el código que se te ha dado

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 12 Nov 2007 08:08 pm

Código :

SELECT t1.nombre
FROM tabla1 t1 LEFT JOIN tabla2 t2 ON t1.id=t2.id
WHERE t2.id IS NULL

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox
Citar            
MensajeEscrito el 12 Nov 2007 08:16 pm

Darel escribió:

Código :

SELECT t1.nombre
FROM tabla1 t1 LEFT JOIN tabla2 t2 ON t1.id=t2.id
WHERE t2.id IS NULL


Trato de evitar lo más que puedo las consultas anidadas.
PD: Perdón por el doble post.

Por Darel

725 de clabLevel

5 tutoriales

 

I'm a human

firefox
Citar            
MensajeEscrito el 13 Nov 2007 01:27 am
Muchas gracias a todos....
Por eso que no me salia, :S

Yo hacia:

Código :

SELECT t1.nombre
FROM tabla1 t1 LEFT JOIN tabla2 t2 ON t1.id=t2.id AND t2.id IS NULL


...me devolvia todos los datos y los de la tabla2 me salian con NULL

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie
Citar            
MensajeEscrito el 14 Nov 2007 12:08 am
Me surgio un problemita

Código :

SELECT t1.nombre
FROM tabla1 t1 LEFT JOIN tabla2 t2 
ON t1.id=t2.id
WHERE t2.id IS NULL


Si en la Un elemento de la tabla1 tiene X cantidad de un Sub-Elemento en la tabla2, me muestra X filas con el elemento de la tabla1.-
Como puedo hacer que me muestre todos los elemento y si es que tienen cero(0), uno (1) o Mas (elementos).-

Ejemplo:

Código :

tabla1
id   elemento
1     lapices
2     goma
3     Cuaderno


tabla2
id Subelemento
1  pluma
3  corchetes
1  tinta
1  tripa
3  Hoja

$query="???"

id elemento Subelemento
1   lapices     pluma  (o no se NOT NULL)
2   goma        NULL
3   Cuaderno    corchetes (o no se NOT NULL)


Espero que me alla explicado bien

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie
Citar            
MensajeEscrito el 14 Nov 2007 06:20 pm
Ya encontre la respuesta. Tenia que utilizar el GROUP BY.-

Código :


SELECT t1.nombre
FROM tabla1 t1 LEFT JOIN tabla2 t2 
ON t1.id=t2.id
WHERE t2.id IS NULL
GROUP BY  t1.nombre

Por york3rs

Claber

561 de clabLevel

1 tutorial

Genero:Masculino  

LA___Chile

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.