Comunidad de diseño web y desarrollo en internet online

Realizar SELECT a tabla relaciones

Citar            
MensajeEscrito el 10 Ago 2016 01:34 pm
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

Código :

+-----+-----------------------+
| idC | nombre                |
+-----+-----------------------+
|   1 | Super Norma           |
|   2 | Kiosco Pepe           |
|   3 | Bar Cholo             |
|   4 | Libertad Supermercado |
|   5 | Marcos Maxikiosco     |
|   6 | Pizeria Tana          |
+-----+-----------------------+

consumen

Código :

+-----+-----------+-----------+
| 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.

Código :

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!

Por fmanfredi

8 de clabLevel



 

chrome
Citar            
MensajeEscrito el 10 Ago 2016 06:40 pm
Hola, tienes que hacer una consulta con otra consulta dentro, es decir:

Primero haces una consulta mysql en la que selecciones los que SÍ consumen Fanta. La llamaremos consulta 1. Si estas en php, la guardaría en la variable $si_consumen_x_producto.

Despues haces una consulta que contendrá la primera dentro del Not In. Sería algo así:

Código :

$si_consumen_x_producto = 'SELECT clienteId FROM consumen WHERE producto="fanta"';

$consulta_final = "SELECT * FROM clientes WHERE idC NOT IN (' . $si_consumen_x_producto . ')";


o bien lo metes todo seguido:

Código :

SELECT * FROM clientes WHERE idC NOT IN (SELECT clienteId FROM consumen WHERE producto="fanta")

Por loiscr

1 de clabLevel



Genero:Masculino  

programador php css

chrome
Citar            
MensajeEscrito el 11 Ago 2016 09:17 pm
Muchisimas gracias, es la solucion que necesitaba!!

Gracias!

Por fmanfredi

8 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.