"Ryan Kristensen" <usenet@ryankristensen.invalid> skrev i en meddelelse 
news

.ug0fsthyzr1c02@ryan-ts6hqrwscb...
> Hej.
>
> Jeg har et problem med en sql-forespørgsel i en mysql-database.
> Jeg har tre databaser: en med produkter, en med tilbehør til produkterne, 
> og en database jeg bruger til at tilknytte tilbehøret til produkterne.
> PRODUKTER
> produkter_id PK
> navn
> tillæg
>
> TILBEHØR
> tilbehør_id PK
> navn
> pris
>
> TILBEHØR_I_PRODUKTER
> produkter_id
> tilbehør_id
>
> Jeg vil gerne sortere efter den samlede pris, som skal være summen af 
> prisen på alt tilknyttet tilbehør, og i nogle tilfælde skal et tillægsfelt 
> i produkter tilføjes til summen. Problemet er, at når jeg bruger 
> nedenstående sql-forespørgsel, så bliver tillægget tilføjet for hver 
> enkelt tilbehør, og jeg ville gerne have, at det kun blev tilføjet én gang 
> pr. produkt, uanset hvor meget tilbehør der måtte være. Der vil derudover 
> også være nogle tilfælde, hvor et produkt ikke indeholder noget tilbehør, 
> i det tilfælde skal den samlede pris selvfølgelig bare være indholdet af 
> tillægs-feltet.
>
> Er det muligt?
>
> SELECT p.navn, p.tillæg, SUM(t.pris+p.tillæg), t.pris
> FROM produkter p
>     LEFT JOIN tilbehør_i_produkter tp
>       ON p.produkter_id=tp.produkter_id
>     LEFT JOIN tilbehør t
>       ON tp.tilbehør_id=t.tilbehør_id
> GROUP BY p.produkter_id
> ORDER BY SUM(t.pris+p.tillæg)
>
> --
> Mvh.
> Ryan Kristensen
Prøv med:
SELECT p.navn, p.tillæg, SUM(t.pris)+p.tillæg as slutpris
 FROM produkter p
     LEFT JOIN tilbehør_i_produkter tp
       ON p.produkter_id=tp.produkter_id
     LEFT JOIN tilbehør t
       ON tp.tilbehør_id=t.tilbehør_id
GROUP BY p.produkter_id
ORDER BY slutpris
Alternativt, prøv med en inline forespørgsel:
SELECT navn, tillæg, totpris + tillæg as slutpris
FROM (
SELECT p.navn, p.tillæg, SUM(t.pris) as totpris
 FROM produkter p
     LEFT JOIN tilbehør t
       ON tp.tilbehør_id=t.tilbehør_id
     LEFT JOIN tilbehør_i_produkter tp
       ON p.produkter_id=tp.produkter_id
GROUP BY p.produkter_id
) AS x
ORDER BY totpris + tillæg