consulta mysql

Iniciado por OssoH, 23 Junio 2021, 17:50 PM

0 Miembros y 1 Visitante están viendo este tema.

OssoH

Os muestro por ejemplo los datos de un producto concreto :
SELECT * FROM ps_product_tag_special ts WHERE id_product=200000102

me devuelve :
id_product   id_tag_special
200000102   1
200000102   8
200000102   14
200000102   15

Quiero por ejemplo una SQL (MYSQL) que me devuelva los id_product  que tengan en su id_tag_special tanto el 8 como el 15.

Lo he intentado con la query :
SELECT DISTINCT(ts.id_product)
FROM ps_product_tag_special ts
WHERE ts.id_tag_special IN (8,15)

pero no me sirve porque me devuelve los id_product que tengan 8 o 15. 
Yo quiero la operación sea un AND y no un OR.

¿alguna sugerencia? Gracias


WHK

CitarQuiero por ejemplo una SQL (MYSQL) que me devuelva los id_product  que tengan en su id_tag_special tanto el 8 como el 15.

Citarpero no me sirve porque me devuelve los id_product que tengan 8 o 15.

Pero no es eso lo que buscabas?, creo que no entendí bien, necesitas obtener todos los id_product que tengan 8 o 15 y justamente eso es lo que te muestra de resultado la base de datos.

CitarYo quiero la operación sea un AND y no un OR.

En ves de:

WHERE ts.id_tag_special IN (8,15)

Debería ser:

WHERE ts.id_tag_special = 8 AND ts.id_tag_special =15

OssoH

Quiero obtener los id_product que tengan 8 y 15

Si utilizo la función IN de mysql no me sirve porque es como si hiciera un OR y no busco eso.

OssoH

Creo que ya lo he solucionado. Voy a comprobarlo bien


SELECT id_product, id_tag_special
FROM ps_product_tag_special
WHERE id_tag_special IN (8,15)
GROUP BY id_product
HAVING COUNT(DISTINCT id_tag_special) = 2

Carloswaldo

Yo creo que eso último que hiciste debería funcionar, siempre que la combinación id_product id_tag_special sea única.

OssoH

Funciona!! ya lo tengo arreglado.
Gracias