-
Algun lobo en MySQL?
Tengo las siguientes tablas:
Código:
Datos1
+---------+---------+---------------+
| user_id | texto1 | floro1 |
+---------+---------+---------------+
| 1 | manzana | fruta roja |
| 2 | naranja | fruta naranja |
| 4 | fresa | fruta fresa |
| 5 | papaya | fruta papaya |
+---------+---------+---------------+
y
Código:
Datos2
+-----------+------------+---------------+
| poster_id | texto2 | floro2 |
+-----------+------------+---------------+
| 1 | skyline | carro skyline |
| 2 | toyota | carro toyota |
| 3 | ferrari | carro ferrari |
| 4 | dodge | carro dodge |
| 5 | mazda | carro mazda |
| 6 | kia | carro kia |
| 7 | volvo | auto volvo |
| 8 | lamborgini | auto lam |
| 9 | vw | auto vw |
| 10 | golf | auto golf |
+-----------+------------+---------------+
Necesito un query que me liste los datos de la tabla Datos2 donde poster_id no sea igual a user_id (3,6,7,8,9,10). Es MySQL 4.1.
No soy DBA ni mucho menos experto en MySQL, pero aprendo rapido. Si le doy mas vueltas de hecho me sale, pero si alguien quiere ayudar, bienvenido sea. Con un query:
Código:
SELECT * FROM datos1 a, datos2 b WHERE a.user_id = b.poster_id;
logro encontrar las que estan en comun. Busco justamente las que no son comunes a ambas tablas.
-
La verdad que no he probado en MySQL 4.1, pero al menos estas formas funcionan para MySQL 5.x
-- FORMA 1 --
SELECT
A.POSTER_ID
FROM
Datos2 A
LEFT JOIN
Datos1 B
ON
B.USER_ID = A.POSTER_ID
WHERE
B.USER_ID IS NULL
-- FORMA 2 --
SELECT A.POSTER_ID
FROM Datos2 A
WHERE
A.POSTER_ID NOT IN ( SELECT B.USER_ID FROM Datos1 B )
-- FORMA 3 --
SELECT A.POSTER_ID
FROM Datos2 A
WHERE
NOT EXISTS ( SELECT B.USER_ID FROM Datos1 B WHERE B.USER_ID = A.POSTER_ID)
Si ambas tablas tienen gran cantidad de filas lo recomendable sería la forma 2 o 3. Espero sirva.
-
Mil gracias, la primera funciono:
Código:
SELECT a.poster_id FROM datos2 a LEFT JOIN datos1 b ON b.user_id = a.poster_id WHERE b.user_id IS NULL
Las otras 2 no trabajan en MySQL 4. Asi es como tambien lo intente pero siempre me daba error de syntax. Nuevamente gracias.