XmasB Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 Jeg skal gjøre et utplukk fra mysql 4.0. Denne støtter ikke subselect. Koden slik den ser ut nå (for mysql 4.1 og opp): SELECT *, "TRUE " AS Tilstede FROM tabellA WHERE aid IN (SELECT aid FROM tabellB WHERE bid = $bid) UNION SELECT *, "FALSE" AS Tilstede FROM tabellA WHERE aid NOT IN (SELECT aid FROM tabellB WHERE bid = $bid) Jeg har litt problemer med å få skrevet om denne til å fungere godt i 4.0. Har prøvd meg frem med JOIN, men kommer ikke helt i mål. Noen som kan hjelpe meg med å få den til å fungere i mysql 4.0? Lenke til kommentar
roac Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 (endret) Jeg skal gjøre et utplukk fra mysql 4.0. Denne støtter ikke subselect. Koden slik den ser ut nå (for mysql 4.1 og opp): SELECT *, "TRUE " AS Tilstede FROM tabellA WHERE aid IN (SELECT aid FROM tabellB WHERE bid = $bid) UNION SELECT *, "FALSE" AS Tilstede FROM tabellA WHERE aid NOT IN (SELECT aid FROM tabellB WHERE bid = $bid) Jeg har litt problemer med å få skrevet om denne til å fungere godt i 4.0. Har prøvd meg frem med JOIN, men kommer ikke helt i mål. Noen som kan hjelpe meg med å få den til å fungere i mysql 4.0? 5565755[/snapback] Noe i retning av dette? select a.*, b.bid is not null from tabellA a right outer join tabellB b on ( (a.aid = b.aid) and (b.bid = $bid) ) Forutsatt at MySQL v4 støtter denne syntaksen da Endret 7. februar 2006 av roac Lenke til kommentar
XmasB Skrevet 7. februar 2006 Forfatter Del Skrevet 7. februar 2006 (endret) Hmm... Fikk ikke den til å virke helt som den skulle gitt. Den gir meg også en rad bestående kun av NULL. (SELECT id IS NULL er vel grunnen til det...) For ordens skyld skal jeg prøve å forklare hvordan jeg vil ha utplukket. Jeg har en tabell A som inneholder spørsmål. Hvert spørsmål har en id. Tabell B inneholder brukerens svar på spørsmålene. Tabell B består hovedsaklig av brukerid, spørsmålsid og svarid. Det jeg ønsker en liste over spørsmålene, hvor det kommer frem hvilke som er besvart av angitt brukerid. Listen jeg ønsker å se vil være som dette: Nr Spm Avgitt svar? 1. Spørmål 1? True 2. Spørmål 2? False 3. Spørmål 3? True Hvor True/False forteller om brukeren har avgitt svar eller ikke. Eksempel i første post virker slik, men denne krever støtte for subselect. Takk for hjelpen! [EDIT] Vanskelig å få listen til å se bra ut, dessverre. Endret 7. februar 2006 av XmasB Lenke til kommentar
roac Skrevet 7. februar 2006 Del Skrevet 7. februar 2006 (endret) Det ser ut som om MySQL 4 støtter case, i så fall: select a.*, case when b.bid is not null then 'TRUE' else 'FALSE' end from tabellA a right outer join tabellB b on ( (a.aid = b.aid) and (b.bid = $bid) ) Edit: Evt kan du se på IF ... select a.*, if(b.bid is not null,'TRUE','FALSE') from tabellA a right outer join tabellB b on ( (a.aid = b.aid) and (b.bid = $bid) ) Det tas forbehold om småfeil, jeg jobber ikke med MySQL selv, jeg har bare tatt manualen fatt (så lærer jeg litt selv også). Endret 7. februar 2006 av roac Lenke til kommentar
XmasB Skrevet 8. februar 2006 Forfatter Del Skrevet 8. februar 2006 Den vil ikke fungere fordi den er avhengig av at tabell B inneholder brukerid. Hele poenget er at den skal gi FALSE der brukerid ikke finnes i tabell B, men samtidig liste opp innholdet av tabell A. Forresten, hvordan får jeg koden i sql-ramme? Lenke til kommentar
Ernie Skrevet 8. februar 2006 Del Skrevet 8. februar 2006 Forresten, hvordan får jeg koden i sql-ramme? 5571469[/snapback] [/SQL] Lenke til kommentar
roac Skrevet 8. februar 2006 Del Skrevet 8. februar 2006 Den vil ikke fungere fordi den er avhengig av at tabell B inneholder brukerid. Hele poenget er at den skal gi FALSE der brukerid ikke finnes i tabell B, men samtidig liste opp innholdet av tabell A. 5571469[/snapback] Bah. Left outer join skulle det stå Lenke til kommentar
XmasB Skrevet 8. februar 2006 Forfatter Del Skrevet 8. februar 2006 Da tror jeg faktisk den virker. Skal teste litt utover kvelden, men det ser bra ut. Takker og bukker. Skal lese mer på join jeg. Lenke til kommentar
roac Skrevet 8. februar 2006 Del Skrevet 8. februar 2006 Da tror jeg faktisk den virker. Skal teste litt utover kvelden, men det ser bra ut. Takker og bukker. Skal lese mer på join jeg. 5572457[/snapback] Joins er praktisk. Det gikk tydeligvis litt fort i svingene der siden jeg satte den gal vei, men slikt skjer Fint at det ser ut til å virke, da har jeg gjort noe nyttig jeg også Lenke til kommentar
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å