Teobald Skrevet 11. februar 2008 Skrevet 11. februar 2008 (endret) Har noen tabeller i en mySql database. Eksempel: fruktkurv & epler SELECT * FROM fruktkurv, epler WHERE fruktkurv.fruktkurvId = epler.fruktkurvId Denne er grei, men hvordan kan jeg liste fruktkurver som ikke inneholder epler og hvordan ville det se ut hvis hvis jeg også hadde appelsiner, bananer osv. EDIT: Fant ut av det... $sql = "SELECT DISTINCT * FROM fruktkurv WHERE NOT EXISTS (SELECT * FROM epler, appelsiner, bananer, plommer WHERE epler.fruktkurvId = fruktkurv.fruktkurvId OR appelsiner.fruktkurvId = fruktkurv.fruktkurvId OR bananer.fruktkurvId = fruktkurv.fruktkurvId OR plommer.fruktkurvId = fruktkurv.fruktkurvId )"; Endret 12. februar 2008 av Teobald
blackbrrd Skrevet 12. februar 2008 Skrevet 12. februar 2008 det så ikke akkurat ut som noen pen spørring... Prøv med f.eks SELECT * FROM fruktkurv LEFT JOIN epler ON epler.fruktkurvid = fruktkurv.fruktkurvid LEFT JOIN plommer ON pl... etc Da vil du hente fram alle fruktkurvene samme hva de inneholder
kaffenils Skrevet 12. februar 2008 Skrevet 12. februar 2008 Jeg synes det er veldig dårlig design å splitte opp frukttyper i forskjellige tabeller. Tenk på alle spørringer som må skrives om når du introduserer en ny frukttype. Lage heller tre tabeller: FruktTyper(FruktTypeId int primary key, FruktType varchar(50)) Frukter(FruktId int primary key, FruktTypeId int, FruktNavn varchar(50)) FruktkurvFrukter(FruktkurvId int, FruktId int, Antall tinyint) PK er FruktkurvId+FruktId I FruktTyper har du verdier som 1,'Eple' ; 2,'Appelsin' ; 3,'Plomme' ; 4,'Drue' osv I Frukter har du verdier som 1,1,'Gravenstein' ; 2,1,'Aroma' ; 3,2,'Moro' ; 4,2,'Tarocco' ; 5,3,'Opal' osv I FruktkurvFrukter har du verdier som 1,1,2 ; 1,2,1 ; 1,3,3 som sier at du i fruktkurv 1 har 2 Gravenstein epler, 1 Armoa eple og 3 Moro applesiner.
Manfred Skrevet 12. februar 2008 Skrevet 12. februar 2008 Morro-appelsiner? Det var da ikke grenser til inngående kunnskaper om fruktnavn her...
kaffenils Skrevet 12. februar 2008 Skrevet 12. februar 2008 Du skulle bare visst hvor mye unyttig informasjon jeg har lagret i toppen Neida, slapp av. Det var ikke verre enn "Google -> I feel lucky"
Teobald Skrevet 15. februar 2008 Forfatter Skrevet 15. februar 2008 det så ikke akkurat ut som noen pen spørring... Prøv med f.eks SELECT * FROM fruktkurv LEFT JOIN epler ON epler.fruktkurvid = fruktkurv.fruktkurvid LEFT JOIN plommer ON pl... etc Da vil du hente fram alle fruktkurvene samme hva de inneholder Jeg ville gjerne hente ut alle registrerte fruktkurver hvor det ikke var samsvar mellom flere frukttyper og fruktkurven (tomme fruktkurver).
Manfred Skrevet 15. februar 2008 Skrevet 15. februar 2008 Men uansett: En tabell pr frukttype? Snakk om ELENDIG databasedesign!
kaffenils Skrevet 15. februar 2008 Skrevet 15. februar 2008 For å hente ut fruktkurver som ikke har 'Eple'. Har ikke testet spørringen, men mener den skal virke. select fk.* from Fruktkurver fk left join FruktkurvFrukter fkf on fkf.FruktkurvId=fk.FruktkurvId left join Frukter f on f.FruktId=fkf.FruktId left join FruktTyper ft on ft.FruktTypeId=f.FruktTypeId and ft.FruktType='Eple' where ft.FruktTypeId is null
Teobald Skrevet 18. februar 2008 Forfatter Skrevet 18. februar 2008 Men uansett: En tabell pr frukttype? Snakk om ELENDIG databasedesign! Det er jo her selvfølgelig ikke frukt det handler om (dette er kun brukt som eksempel), men produkter i flere klasser hvor de forskjellige klassene kan ha fra 5-6 til 30-40 forskjellige "properties" (rader) som skal registreres i fruktkurven (som jo da ikke er en fruktkurv i det hele tatt) ...
kaffenils Skrevet 19. februar 2008 Skrevet 19. februar 2008 Det er jo her selvfølgelig ikke frukt det handler om (dette er kun brukt som eksempel),men produkter i flere klasser hvor de forskjellige klassene kan ha fra 5-6 til 30-40 forskjellige "properties" (rader) som skal registreres i fruktkurven (som jo da ikke er en fruktkurv i det hele tatt) ... Du må allikevel ha en "master"-produkttabell som minimum inneholder produktid og produkttype. Så kan du opprette egne tabeller for å lagre produktegenskaper hvis du vil.
blackbrrd Skrevet 19. februar 2008 Skrevet 19. februar 2008 Det er jo her selvfølgelig ikke frukt det handler om (dette er kun brukt som eksempel),men produkter i flere klasser hvor de forskjellige klassene kan ha fra 5-6 til 30-40 forskjellige "properties" (rader) som skal registreres i fruktkurven (som jo da ikke er en fruktkurv i det hele tatt) ... Du må allikevel ha en "master"-produkttabell som minimum inneholder produktid og produkttype. Så kan du opprette egne tabeller for å lagre produktegenskaper hvis du vil. Skulle til å si det samme selv. Produktnr/navn og pris(er) burde også kunne legges i den master-produkttabellen.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå