MySQL - Realizar SELECT a tabla de relaciones

 
Vista:

Realizar SELECT a tabla de relaciones

Publicado por Franco (2 intervenciones) el 10/08/2016 15:34:44
Buenos días, tengo que realizar una consulta en MySQL que realmente me puso a pensar mucho y tal vez uds me puedan ayudar a destrabarme.
Tengo dos tablas, clientes y tabla consumen.

clientes
1
2
3
4
5
6
7
8
9
10
+-----+-----------------------+
| idC | nombre                |
+-----+-----------------------+
|   1 | Super Norma           |
|   2 | Kiosco Pepe           |
|   3 | Bar Cholo             |
|   4 | Libertad Supermercado |
|   5 | Marcos Maxikiosco     |
|   6 | Pizeria Tana          |
+-----+-----------------------+
consumen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
+-----+-----------+-----------+
| idP | clienteId | producto  |
+-----+-----------+-----------+
|   1 |         1 | Coca Cola |
|   2 |         1 | Pepsi     |
|   3 |         1 | Fanta     |
|   4 |         2 | Sprite    |
|   5 |         2 | Fanta     |
|   6 |         3 | Pepsi     |
|   7 |         4 | Coca Cola |
|   8 |         4 | Sprite    |
|   9 |         4 | Seven Up  |
|  10 |         5 | Fanta     |
|  11 |         5 | Sprite    |
|  12 |         6 | Coca Cola |
|  13 |         6 | Fanta     |
|  14 |         6 | Sprite    |
+-----+-----------+-----------+

En el formulario el campo "NO MOSTRAR clientes que consuman:" ej: Fanta
Lo que quiero hacer es entregarle un array o un string con limitadores y este me filtre por producto.

1
2
3
4
5
6
7
8
9
10
11
12
SELECT * FROM clientes, consumen WHERE producto NOT IN ('Fanta') AND idC=clienteId GROUP BY idC;
;
+-----+-----------------------+-----+-----------+-----------+
| idC | nombre                | idP | clienteId | producto  |
+-----+-----------------------+-----+-----------+-----------+
|   1 | Super Norma           |   1 |         1 | Coca Cola |
|   2 | Kiosco Pepe           |   4 |         2 | Sprite    |
|   3 | Bar Cholo             |   6 |         3 | Pepsi     |
|   4 | Libertad Supermercado |   7 |         4 | Coca Cola |
|   5 | Marcos Maxikiosco     |  11 |         5 | Sprite    |
|   6 | Pizeria Tana          |  12 |         6 | Coca Cola |
+-----+-----------------------+-----+-----------+-----------+

El problema es que "Pizeria Tana", "Marcos Maxikiosco", "Super Norma" y "Kiosco Pepe" SI consumen 'Fanta' y no quiero que me aparezcan.

Yo entiendo porque SI aparecen, por eso consulto si alguien sabría como resolver esto DESDE LA CONSULTA.

Muchas gracias por su tiempo!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Realizar SELECT a tabla de relaciones

Publicado por Martha (80 intervenciones) el 10/08/2016 19:27:44
Si solo quieres obtener nombres, yo no pondría *, pero evidentemente dentro del NOT IN debes incluir una consulta entre los que te consuman Fanta, para que luego no aparezcan.

1
2
3
4
5
6
7
SELECT nombre FROM clientes, consumen
WHERE nombre NOT IN(
SELECT nombre FROM clientes, consumen
WHERE producto='Fanta' AND
id_C=clienteid)
AND id_C=clienteid
GROUP BY nombre;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Realizar SELECT a tabla de relaciones

Publicado por Franco (2 intervenciones) el 10/08/2016 21:43:38
Muchas gracias Martha, esas tablas que te pase son para ejemplo para guiarme como solucionar la situacion por eso puse *.

Pero te quiero agradecer muchisimo porque me diste la idea, va la solución directamente de como hacerlo!!!

Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar