Ir para conteúdo

wesleycsilva

Members
  • Total de itens

    13
  • Registro em

  • Última visita

Posts postados por wesleycsilva


  1. Obrigado meu caro, ms com IN não funciona porque irá trazer compras (ids) que podem ter comprado apenas um produto e não todos. Esse é o grande problema, preciso que retorne as compras que tenham todos os produtos. 

    5 minutos atrás, ShadowDLL disse:

    Segue exemplo:

     

    SQLs a SER UTILIZADAS

    
    CREATE TABLE produtos (
    	idProduto INT NOT NULL AUTO_INCREMENT,
    	nomeProduto VARCHAR(50) NOT NULL,
    	PRIMARY KEY(idProduto)
    );
    INSERT INTO produtos (nomeProduto) VALUES
    ('Suco de Laranja'),
    ('Fita Branca'),
    ('Linha Branca'),
    ('Creme');
    
    CREATE TABLE compras (
    	idCompra INT NOT NULL AUTO_INCREMENT,
    	dataCompra DATE NOT NULL,
    	PRIMARY KEY(idCompra)
    );
    INSERT INTO compras (dataCompra) VALUES
    (CURRENT_DATE),
    (CURRENT_DATE);
    
    CREATE TABLE produtos_has_compras (
    	idItem INT NOT NULL AUTO_INCREMENT,
    	idCompra INT NOT NULL,
    	idProduto INT NOT NULL,
    	quantidade INT(5) NOT NULL,
    	PRIMARY KEY(idItem),
    	FOREIGN KEY(idCompra) REFERENCES compras (idCompra),
    	FOREIGN KEY(idProduto) REFERENCES produtos (idProduto)
    );
    INSERT INTO produtos_has_compras (idCompra, idProduto, quantidade) VALUES
    (1, 1, 10),
    (1, 3, 1),
    (1, 2, 1),
    (2, 4, 2),
    (2, 1, 1);

     

    QUERY

    
    SELECT
    	idCompra
    FROM
    	produtos_has_compras
    WHERE
    	idProduto IN (1, 2, 3)
    GROUP BY
    	idCompra
    ;

     

     

    6 minutos atrás, ShadowDLL disse:

    Segue exemplo:

     

    SQLs a SER UTILIZADAS

    
    CREATE TABLE produtos (
    	idProduto INT NOT NULL AUTO_INCREMENT,
    	nomeProduto VARCHAR(50) NOT NULL,
    	PRIMARY KEY(idProduto)
    );
    INSERT INTO produtos (nomeProduto) VALUES
    ('Suco de Laranja'),
    ('Fita Branca'),
    ('Linha Branca'),
    ('Creme');
    
    CREATE TABLE compras (
    	idCompra INT NOT NULL AUTO_INCREMENT,
    	dataCompra DATE NOT NULL,
    	PRIMARY KEY(idCompra)
    );
    INSERT INTO compras (dataCompra) VALUES
    (CURRENT_DATE),
    (CURRENT_DATE);
    
    CREATE TABLE produtos_has_compras (
    	idItem INT NOT NULL AUTO_INCREMENT,
    	idCompra INT NOT NULL,
    	idProduto INT NOT NULL,
    	quantidade INT(5) NOT NULL,
    	PRIMARY KEY(idItem),
    	FOREIGN KEY(idCompra) REFERENCES compras (idCompra),
    	FOREIGN KEY(idProduto) REFERENCES produtos (idProduto)
    );
    INSERT INTO produtos_has_compras (idCompra, idProduto, quantidade) VALUES
    (1, 1, 10),
    (1, 3, 1),
    (1, 2, 1),
    (2, 4, 2),
    (2, 1, 1);

     

    QUERY

    
    SELECT
    	idCompra
    FROM
    	produtos_has_compras
    WHERE
    	idProduto IN (1, 2, 3)
    GROUP BY
    	idCompra
    ;

     

    Obrigado meu caro, mas com IN não funciona porque irá trazer compras (ids) que podem ter comprado apenas um produto e não todos. Esse é o grande problema, preciso que retorne as compras que tenham todos os produtos. 


  2. Tem uma tabela que relaciona os produtos de uma determinada compra, onde preciso consultar diversos produtos e retornar os ids das compras que tenham todos os produtos que consultei, em uma estrutura parecida com o exemplo abaixo:

     

    SELECT  * FROM  produtos_has_compras WHERE (idProduto = 6 AND idProduto = 77 AND idProduto = 11) GROUP BY idCompra;

     

    Alguém teria uma solução que possa me ajudar?

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.