Avatar billede Calle5463 Forsker
09. december 2016 - 20:49 Der er 3 kommentarer og
1 løsning

SELECT DISTINCT or not

To tabeller, item og aftaler

item (id, item, multiple, ....)
aftaler (id, item_id, .....)

For nogen item gælder, at de kun må stå i aftaler een gang (multiple=nej), for andre må de stå utallige (multiple=ja)

Den her klare de der kun må stå een gang uden at spørge til multiple, men hvordan indbygger jeg at den ikke behøver spørge hvis multiple er ja? (Kan man indbygge if-sætninger i WHERE?)
Avatar billede arne_v Ekspert
09. december 2016 - 21:08 #1
Det er ikke klart for mig hvad du vil, men:

SELECT item.id,item.item, COUNT(*) AS n
FROM item JOIN aftaler ON item.id=aftaler.item_id
WHERE NOT multiple
GROUP BY item.id,item.item
HAVING n > 1

burde finde "synderne".
Avatar billede Calle5463 Forsker
09. december 2016 - 22:09 #2
Njahhh.
I min linktabel (aftaler) vil jeg kunne linke to forskellige typer items til et medlem.

Det ene item er fx en plads, som kun kan linkes en gang, mens det andet er et medlemsskab, som i princippet kan linkes utallige gange.

Det ene har jeg klaret ved den viste select, som kun viser de item der ikke allerede er "brugt" i linktabellen, og dermed kan vælges.

Men det andet item vil jeg godt kunne bruge flere gange, og ønsker det dermed på listen over valgmuligheder sammen med de ikke-brugte.
Avatar billede Calle5463 Forsker
09. december 2016 - 22:10 #3
Når eet medlem har optaget en plads, kan pladsen ikke linkes til andre
Avatar billede Calle5463 Forsker
09. december 2016 - 22:47 #4
Ser ud til det var mere simpelt at løse:

WHERE
        itemgruppe_id = '$itemgruppe_id'
            AND (resource_antal > 1 OR id NOT IN (SELECT DISTINCT item_id FROM cer_aftaler))";


resource_antal er et felt jeg havde tænkt, men ikke fik brug for, at bruge til noget andet ...... Så nu beholder jeg et :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester