Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Consulta MYSQL compleja

Estas en el tema de Consulta MYSQL compleja en el foro de Mysql en Foros del Web. Estoy tratando de hacer una consulta que (al menos para mi) me parece muy compleja. Para exponer el problema simplificare las tablas a lo que ...
  #1 (permalink)  
Antiguo 14/04/2016, 01:45
 
Fecha de Ingreso: julio-2015
Mensajes: 25
Antigüedad: 9 años, 3 meses
Puntos: 0
Consulta MYSQL compleja

Estoy tratando de hacer una consulta que (al menos para mi) me parece muy compleja. Para exponer el problema simplificare las tablas a lo que me interesa de cada una:
Tengo una serie de productos:

Tabla fcart001
ACODAR (codigo del producto)
ARESNUM4 (familia del producto)

Y otra tabla que determina que producto es la alternativa de que otro producto
Tabla fcalt001
SCOD: Codigo (No único) que enlaza los productos
SART: Codigo del producto

La primera tabla es una tabla normal, cada tupla es un producto, la segunda es algo mas rara. Tiene la siguiente forma:

SCOD SART
1 Producto1
1 Producto2
1 Producto3
2 Producto4
2 Producto5

De esta forma los que tienen el mismo SCOD son alternativas entre ellos (rl producto 2 seria la altrenativa del 3 y del 4 y viceversa).

Una vez expuesto la pregunta es....¿Que consulta podria hacer para mostrar todos los productos de la familia (ARESNUM4) 3 que no tengan alternativa de la familia 2?

Le he dado 200 vueltas y no lo he sacado, la información esta ahí y esta relacionada pero no doy con ello. ¿Podríais ayudarme?

Un saludo y muchisimas gracias
  #2 (permalink)  
Antiguo 14/04/2016, 06:45
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 13 años, 5 meses
Puntos: 15
Respuesta: Consulta MYSQL compleja

Suponiendo que tienes
Código MySQL:
Ver original
  1. CREATE TABLE fcart001
  2. (
  3. ACODAR int,
  4. ARESNUM4 int
  5. );
  6.  
  7. CREATE TABLE fcalt001
  8. (
  9. SCOD int,
  10. SART int
  11. );
  12.  
  13. INSERT INTO fcart001 VALUES (1, 2);
  14. INSERT INTO fcart001 VALUES (2, 2);
  15. INSERT INTO fcart001 VALUES (3, 2);
  16. INSERT INTO fcart001 VALUES (4, 1);
  17. INSERT INTO fcart001 VALUES (5, 1);
  18. INSERT INTO fcart001 VALUES (6, 1);
  19. INSERT INTO fcart001 VALUES (7, 3);
  20. INSERT INTO fcart001 VALUES (8, 3);
  21. INSERT INTO fcart001 VALUES (9, 3);
  22. INSERT INTO fcart001 VALUES (10, 4);
  23.  
  24.  
  25. INSERT INTO fcalt001 VALUES (1, 1);
  26. INSERT INTO fcalt001 VALUES (3, 2);
  27. INSERT INTO fcalt001 VALUES (3, 3);
  28. INSERT INTO fcalt001 VALUES (1, 4);
  29. INSERT INTO fcalt001 VALUES (3, 5);
  30. INSERT INTO fcalt001 VALUES (2, 6);
  31. INSERT INTO fcalt001 VALUES (1, 7);
  32. INSERT INTO fcalt001 VALUES (3, 8);
  33. INSERT INTO fcalt001 VALUES (2, 9);
  34. INSERT INTO fcalt001 VALUES (1, 10);


La query (si no me equivoco ya que me he mareado xD)

Código SQL:
Ver original
  1. SELECT * FROM fcart001, fcalt001
  2. WHERE ARESNUM4 = 3 AND fcart001.ACODAR = fcalt001.SART
  3. AND fcalt001.SCOD NOT IN (
  4. SELECT scod FROM fcart001, fcalt001  
  5. WHERE ARESNUM4 = 2 AND fcart001.ACODAR = fcalt001.SART
  6. )


Ahora lo que no entiendo es que has dicho que "(rl producto 2 seria la altrenativa del 3 y del 4 y viceversa)." El producto 2 no es alternativa del 3 y del 1???
  #3 (permalink)  
Antiguo 19/04/2016, 00:00
 
Fecha de Ingreso: julio-2015
Mensajes: 25
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Consulta MYSQL compleja

Pues funciona! Muchisimas gracias ;)

Etiquetas: compleja, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:19.