그래서 학교 프로젝트가 있으며 마지막 단계를 완전히 마쳤습니다. Soma.soma
는 분입니다 Consumidor.number
(-s)해야SQL은 최대/최소 필드가있는 행에서 필드를 가져옵니다.
Consumidor.number Soma.soma
123 90
456 70
789 70
예상 결과 : 그래서 지금 내가 같은 테이블이
SELECT Consumidor.numero, Soma.soma
FROM Consumidor
JOIN
(SELECT compra.consumidor, SUM(Eco.eco*compra.quantidade) as soma
FROM compra
JOIN
(SELECT composto.produto, composto.prodMarca, Produto.nome,
sum(Elemento.pegadaEcologica * composto.percentagem/100) AS eco
FROM composto
JOIN Produto
ON composto.produto = Produto.codigo
AND composto.prodMarca = Produto.marca
JOIN Elemento
ON composto.elemento = Elemento.codigo
GROUP BY composto.produto, composto.prodMarca) Eco
ON compra.produto = Eco.produto AND compra.prodMarca = Eco.prodMarca
GROUP BY compra.consumidor) Soma
ON Consumidor.numero = Soma.Consumidor
: 내 코드가있다.
e.e. 이 테이블의 결과를해야한다 :
Consumidor (PK numero, email, sexo, nascimento)
Elemento (PK codigo, nome, pegadaEcologica, saude)
Produto (PK codigo, FK PK Marca.numero marca, nome, tipo, comercioJusto)
compra (FK PK Produto.codigo produto, FK PK Produto.marca prodMarca, Consumidor.numero, quantidade)
composto (FK PK Produto.codigo produto, FK PK Produto.marca prodMarca, FK PK Elemento.codigo elemento, percentagem)
업데이트 :이 쿼리에 사용 된 모든 테이블에 대한 원래의 스키마가있다
Consumidor.number
456
789
. 은 내가 솔루션 붙어 didnt한다 - 해결책이 :
SELECT Consumidor.numero, Soma.soma
FROM Consumidor
JOIN
(SELECT compra.consumidor, SUM(Eco.eco*compra.quantidade) as soma
FROM compra
JOIN
(SELECT composto.produto, composto.prodMarca, Produto.nome,
sum(Elemento.pegadaEcologica * composto.percentagem/100) AS eco
FROM composto
JOIN Produto
ON composto.produto = Produto.codigo
AND composto.prodMarca = Produto.marca
JOIN Elemento
ON composto.elemento = Elemento.codigo
GROUP BY composto.produto, composto.prodMarca) Eco
ON compra.produto = Eco.produto AND compra.prodMarca = Eco.prodMarca
GROUP BY compra.consumidor) Soma
ON Consumidor.numero = Soma.Consumidor
WHERE Soma.soma <= ALL
(SELECT SUM(Eco.eco*compra.quantidade) as soma
FROM compra
JOIN
(SELECT composto.produto, composto.prodMarca, Produto.nome,
sum(Elemento.pegadaEcologica * composto.percentagem/100) AS eco
FROM composto
JOIN Produto
ON composto.produto = Produto.codigo
AND composto.prodMarca = Produto.marca
JOIN Elemento
ON composto.elemento = Elemento.codigo
GROUP BY composto.produto, composto.prodMarca) Eco
ON compra.produto = Eco.produto AND compra.prodMarca = Eco.prodMarca
GROUP BY compra.consumidor)
간단히 말해서 전체 소마 쿼리 WHERE 절에 설치해도. 이 메신저로 예상 리셋 되네. 그러나 이것은보기 흉하게 보이고 좀 더 우아한 방법을 찾고 있습니다.
P. 토마토를 던지지 마십시오 - 프로젝트 진술에 따라 FROM
절에 하위 쿼리를 사용할 수 없지만 전체 코드에 대한 관찰이 있다면 감사하겠습니다.
현재 'from' 조항에 subselect가 있다는 것을 알고 있습니까? – Jacobm001
몇 가지 샘플 입력 및 출력 데이터를 포함하십시오. –
@ Jacobm001 나는 선택의 여지가 없다는 것을 의미한다. (선택 ....). 내 모든 subselects가 join 절 –