Dudas de mysql

Buenas, aunque voy a plantear una duda, espero que otra gente pregunte las suyas en este hilo, a ver si termina cómo el antiguo hilo de PHP (que, por cierto, que tal si recuperamos una v2.0? aunque por lo que vi se tiene que pulir el foro ya que da algunos problemas...

Mi duda es la siguiente... entre 2 tablas que estan relacionadas por un id (t1.idx = t2.idy) quiero obtener los resultados de t1 que no tengan relación con t2... si por ejemplo

Tabla 1
id idy
1  2
2  2
3  1
4  4
5  4


Tabla 2
id idx
a  1
b  2
c  3
d  4
e  5


La idea esta en que me devuelva algo asi cómo:

id idy
c   3
e   5


Que son los valores que no mantienen ninguna relación con la otra tabla... por ahora, cuando surge el error lo elimino al vuelo, pero queda feo en una web, deberia ser un proceso algo mas general y automatizado

Alguna idea de cómo sacarlo? Gracias!
No entiendo, ¿quieres que se busque la cadena de idy o id y que muestre la contraria? Eso con PHP es fácil.
Si te he entendido bien( quedarse con los resultados de la tabla A que no esten relacionados con la tabla B), eso se realiza con mysql con un LEFT OUTER JOIN:

SELECT * FROM A LEFT OUTER JOIN B on a.tdx=b.tdy


Salu2
Una forma de ver lo que quiero hacer es por ejemplo una tabla con fechas y otra con citas (una agenda, vaya), relacionadas con entre ellas por el cita.id (el ejemplo se puede hacer claramente con una tabla,lo se, es un ejemplo >_<)

Si uso un sistema de búsqueda por la tabla fecha para ver las fechas que hay (que se habrán creado al crear una cita en ese dia), si por algún motivo se ha eliminado la última cita de ese día, pues me gustaría saber que días ya no están relacionados con ninguna cita... si todas las tías me han dado calabaza para el proximo mes y las borro, quiero no tener constancia que en ese dia haya pasado algo...

fechas
fecha    id_chica
1-1-08  2
1-2-08  2
5-5-08  3
1-5-08  4

chicas
id  nombre
1   Marta
3   Miriam
4   Montse
5   Veronica


En la lista he eliminado la chica numero 2 porque se la quería pegar a su novio, que es una armario de 4x4 y no me interesa... (sobretodo el novio), dejando de lado es xD, la SELECT me tendría que devolver los días que no pertenecen a ninguna chica, NO las chicas que no tienen ningún día, en este caso:

fecha    id_chica
1-1-08  2
1-2-08  2


La cosa es meramente para comprobar que no ha existido dicho fallo, ya que "supuestamente" al eliminar la última cita elimina ese día de la tabla...

El LEFT/RIGHT OUTER JOIN no termina de darme el resultado deseado, en todo caso seguiré mirándolo porque parece ser que por ahí van los tiros... (tendré que agacharme que no me den)

PD: Pido perdón por lo sexista que pueda resultar el ejemplo.. en caso de ofensa sustituir chicas por chicos ej: Marta -> Jorge, Miriam -> Perico... hasta completar la tabla...
Con un toque menos sexista :D, y si entendí bien lo que buscas, sería algo así:

select *
from fechas
where fechas.id_persona not in (select id from persona);
Eso es! eso si me da el resultado deseado... yo andaba buscando algun !isin o algo asi... pero vamos not in mas claro el agua :D

Muchas gracias!
5 respuestas