Pregunta SQL

Estado
No está abierto para más respuestas.

JulianD

Lanero Reconocido
Se unió
13 Abr 2001
Mensajes
9,548
Tengo una pregunta, haber si puedo obtener unos daticos de dos tablas, que me gustaría hacerlo en una sola query... Suena sencillo, pero la verdad no he podido hacerlo... haber si alguien me colabora:

Tengo dos tablas:

Tabla 1:

Código:
+----------+-------------------+
| threadid | title             |
+----------+-------------------+
|        4 | Pentium 4 3.06GHz |
|        8 | Gts               |
+----------+-------------------+
Y la tabla 2:
Código:
+----------+
| threadid |
+----------+
|        8 |
|        0 |
+----------+

Lo que quiero hacer es una query que me devuelva el threadid y el título de la Tabla 1, pero con la condicion de que este threadid NO puede estar en el threadid de la tabla 2.... La verdad le he intentado y ni idea...

Entonces en definidas cuentas, en este ejemplo particular, necesitaría que la query me devolviera...

Código:
+----------+-------------------+
| threadid | title             |
+----------+-------------------+
|        4 | Pentium 4 3.06GHz |
+----------+-------------------+
...puesto que el threadid de este elemento no se encuentra en la Tabla 2.... Si alguien sabe, help me please :)
 

ODDG

LANero Fundador
Lanero VIP
Se unió
13 Abr 2001
Mensajes
1,684
Uffff, violenta con una sola Query...
Aunque podrías intentar anidando selects pero incumpliendo condiciones.
O sea, armas una columna temporal descartando los threadid repetidos, luego con esa temporal la comparas con la columna threadid de la tabla uno, entonces solo haces un select a las filas que tengan threadid iguales.
 

JulianD

Lanero Reconocido
Se unió
13 Abr 2001
Mensajes
9,548
Anidando selects?

Osea select from x where (Select from y...)...) ????

No puedo, porque lo necesito para mysql y en ese lenguaje todavia no hay multiples selects...

Si no hay solución, se tendrá que hacer con 2 queries... :(
 

jasz

Lanero Reconocido
Se unió
10 Ene 2002
Mensajes
1,295
select t.threadid, t.title from tabla t , tabla2 d where t.threadid != d.threadid;

asi?
 

JulianD

Lanero Reconocido
Se unió
13 Abr 2001
Mensajes
9,548
No funcionó....Mostró como 3 veces el contenido de tabla 1, incluyendo los valores que estoy tratando de quitar, los de tabla 2....
 

JulianD

Lanero Reconocido
Se unió
13 Abr 2001
Mensajes
9,548
No conozco sobre selects anidados pero supongo que tecnicamente son dos selects en una sola query... Da lo mismo hacer primero un select y luego otro... Bueno, algo parecido fue lo que me tocó hacer.. jeje
 

ODDG

LANero Fundador
Lanero VIP
Se unió
13 Abr 2001
Mensajes
1,684
Se le llaman sub select's

SELECT * FROM table1 WHERE NOT EXISTS (SELECT id FROM table2 where table1.id=table2.id);

Mira a ver si esto te da ideas :)
 

JulianD

Lanero Reconocido
Se unió
13 Abr 2001
Mensajes
9,548
si, me da la idea con que solucioné el problema... Primero un select y luego otro... Asi lo hice.
 

jasz

Lanero Reconocido
Se unió
10 Ene 2002
Mensajes
1,295
debe haber una forma mas corta, pero tengo pereza mental.. :D
 

ZeN<CyBeRKiLLeR>

LANero oficial
Se unió
15 Abr 2001
Mensajes
2,491
Pero entonces a la final que? Mysql no soporta el query anidado que mostro oddg? porque me parecio violenta esa, no se me hubiera ocurrido jamas, ojala cuando vea bases no me salga algo asi, porque yo si pongo esa base a dar vueltas.
 

Sh4dow

Lanero Reconocido
Se unió
4 Jun 2002
Mensajes
587
hasta donde yo se mysql si deja hacer selects anidados, pero no estoy seguro voy a ver y luego cuento :)
 

Sh4dow

Lanero Reconocido
Se unió
4 Jun 2002
Mensajes
587
no tendremos soporte para subselects en mysql hasta que no salga la version 3.24.xx o la 4.0 estable
 

JulianD

Lanero Reconocido
Se unió
13 Abr 2001
Mensajes
9,548
Estas en lo cierto Sh4dow... MySQL no soporta select dentro de otro select.....
 
Estado
No está abierto para más respuestas.
Arriba