10. januar 2007 - 14:12
Der er
26 kommentarer og 3 løsninger
Tricky forspørgsel
Jeg har en tabel (LOG) (USERID, HTYPE) med en 'LOG' over hvilke handlinger der er lavet på på hver record i tabel (USERS) (ID m.m.). Jeg skal lave en forspørgsel der finder alle de records i USER hvor jeg IKKE har lavet en bestemt handling f.eks "MAIL SENT" som HTYPE i LOG. Men der kan eller kan ikke have været udført andre handlinger f.eks. "VELKOMST SENT" som HTYPE i LOG
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
10. januar 2007 - 14:15
#1
MYSQL er 4.1
10. januar 2007 - 14:38
#2
SELECT * FROM USER WHERE NOT id IN (SELECT userid FROM LOG WHERE HTYPE="VELKOMST SENT");
10. januar 2007 - 14:42
#3
I wish! Virker ikke i denne vrsion af MYSQL
10. januar 2007 - 14:43
#4
skal det ikke være SELECT * FROM USER WHERE id NOT IN (SELECT userid FROM LOG WHERE HTYPE="VELKOMST SENT");
10. januar 2007 - 14:44
#5
kalp: begge dele burde virke dta: kan være 4.1 ikke understøtter sub-selects.... så bliver det lidt mere tricky ... :-/
10. januar 2007 - 14:46
#6
Det er derfor jeg indsætte max point!
10. januar 2007 - 14:46
#7
hvad med denne (hvis jeg tænker korrekt) og ja hvilken version af mysql er det.? SELECT * FROM USER WHERE id IN (SELECT userid FROM LOG WHERE HTYPE <> "VELKOMST SENT");
10. januar 2007 - 14:47
#8
hvad med noget lign. : SELECT u.* FROM user u LEFT OUTER JOIN LOG l ON l.userid=u.id AND l.htype="VELKOMST SENT" WHERE l.htype IS NULL
10. januar 2007 - 14:52
#9
kalp: vil det ikke bare give brugere, som har andre log-forekomster end VELKOMST SENT, men ikke nødvendigvis bruger som ikke har nogen VELKOMST SENT ?
10. januar 2007 - 14:53
#10
OK i den rigtige retning men: Jeg er efter de ID hvor der IKKE tester positivet på l.htype="VELKOMST SENT" Altså hvis der findes en record i LOG med HTYPE ="VELKOMST SENT" så skal det ID ikke være i listen. Problemet er at der kunne være en anden handling.
10. januar 2007 - 14:55
#11
SELECT info.* FROM USER info, Log log WHERE log.id = info.id AND log.HTYPE <> 'VELKOMST SENT'
10. januar 2007 - 14:56
#12
Kommentar: fsconsult.dk 10/01-2007 14:52:14 Ved det ikke... den der inder select laver jo en liste over alle der ikke har lavet den der handling.. så den burde vel virke? hvis altså hans mysql understøtter den
10. januar 2007 - 14:58
#13
kalp: nej, den laver en liste over folk der har lavet andre handlinger.. dta: prøvede du den med left outer join?
10. januar 2007 - 14:59
#14
4.1 burde da ellers understøtte subselects ... ?
10. januar 2007 - 14:59
#15
fsconsult.dk >> ja? og det er vel det han spørger efter! læg mærke til at jeg blot skriver where id IN og ikke NOT IN !
10. januar 2007 - 15:02
#17
kalp: nej, han spørger jo efter folk som IKKE har lavet den handling ... det er ikke helt det samme ;-) spørgsmålet er om subselects virker på hans MySQL eller ej ... det gør alverden til forskel ...
10. januar 2007 - 15:03
#18
dta: hvad får du af fejl, hvis du kører: SELECT * FROM USER WHERE NOT id IN (SELECT userid FROM LOG WHERE HTYPE="VELKOMST SENT");
10. januar 2007 - 15:04
#19
My bad! Det er 4.0.26 forsøger at få den opgraderet da de har nyere versioner, i stedet for at prøve at løse denne Tak for hjælpen!
10. januar 2007 - 15:05
#20
kalp smid et svar så deler jeg pointene!
10. januar 2007 - 15:05
#21
dta >> super;) fsconsult.dk >> Denne sql SELECT * FROM USER WHERE id IN (SELECT userid FROM LOG WHERE HTYPE <> 'VELKOMST SENT'); brugt på denne data id 1 : htype 'VELKOMST SENT' id 2 : htype 'VELKOMST SENT' id 3 : htype 'noget andet' id 4 : htype 'VELKOMST SENT' burde returnere 1,2 og 4 Den der sub select indeholder jo kun id 3!!
10. januar 2007 - 15:06
#22
sorry.. mener den indeholder jo 1,2 og 4 og IKKE 3!
10. januar 2007 - 15:07
#23
ahh... I get it
10. januar 2007 - 15:09
#24
nej.. jeg har sgu ret i det jeg siger.. nåh.. never mind.. problemet blev løst..
10. januar 2007 - 15:09
#25
kalp: hvad med id 1 : htype 'VELKOMST SENT' id 2 : htype 'VELKOMST SENT' id 2 : htype 'JULEMAND' id 3 : htype 'noget andet' id 4 : htype 'VELKOMST SENT' vil så give både 2 og 3 ... ikke ?
10. januar 2007 - 15:13
#26
fsconsult.dk >> der er 2 ja? du overser ikke at jeg skriver WHERE id IN og ikke WHERE id NOT IN ?
10. januar 2007 - 15:15
#27
nej, men den finder jo id=2 og htype="JULEMAND", selvom id 2 har en "VELKOMST SENT" også ... var bare min pointe ;-) men lad det ligge ...
10. januar 2007 - 15:17
#28
jeg går da ud fra at id er unikt.... troede det var en fejl at du skrev 2 ud for den. burde vel se sådan ud id 1 : htype 'VELKOMST SENT' id 2 : htype 'VELKOMST SENT' id 3 : htype 'JULEMAND' id 4 : htype 'noget andet' id 5 : htype 'VELKOMST SENT' men fair nok.. lad det ligge
10. januar 2007 - 15:18
#29
formoder at user-id er unikt i USER, men ikke i LOG .. men tak for diskussionen ;-)
Computerworld tilbyder specialiserede kurser i database-management