mySQL hjelp?

8 innlegg i emnet

Skrevet

Jeg sitter helt fast med en mySQL-query:

Det jeg vil er å få ut en liste over "events" man kan melde seg på, men ikke de en bruker har meldt seg på fra før. Tabellen compo har de forskjellige alternativene og compo_pameldt har alle tingene som brukeren har meldt seg på i, med referanse til compo_id! Det er også en tredje tabell som henter ut bilder til tabellen compo og heter img.

Dette er spørringen så langt, men den funker ikke som den skal.

SELECT

compo.compo_id as hapng_id,

compo.c_name,

img.i_path,

img.i_alt,

compo.c_desc,

compo.c_teamAntall

FROM compo,img

LEFT JOIN compo_pameldt

ON compo_pameldt.uname = 'test'

AND compo_pameldt.compo_id='1'

WHERE img.img_id=compo.c_img_id

AND compo.c_cat='1'

AND compo_pameldt.uname IS NULL

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Kan du legge strukturen på de tre tabellene? Litt enklere å hjelpe deg da. Hvorfor joiner du img og compo_pameldt? Er det ikke combo_pameldt og combo som har en relasjon mellom seg?

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

legg til en or die(mysql_error()) du så får vi se hvor feilen er.

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Noe ala

SELECT c.*

FROM c.compo

WHERE c.uname NOT IN (SELECT cp.uname FROM compo_pameldt cp)

burde fungere. Men er litt avhengig av hvordan du har lagt opp strukturen på databasen din.

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

MySql < 5.0 støtter vel ikke sub-spørringer? I tilfellet så fungerer ikke dette.

Rettelse: MySQL etter 4.1 støtter sub-spørringer.

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

sub spørring er jo ikke noe god løsning uansett...

Det kommer ikk feilmelding, men jeg får ut veldig rare rader...

Jeg skal altså ha ut radene fra tabellen compo, men luke ut de eventene som brukere ("uname" i compo_pameldt) har meldt seg på i fra før. Jeg må samtidig hente ut riktig bilde fra tabellen img.

Her er tabellene, håper det hjelper (stjernene viser bare hva som skal kobles sammen).:

compo_pameldt

pameldt_id

uname

team_id

*compo_id

invite

compo

*compo_id

c_name

c_desc

**c_img_id

c_cat

c_antall

c_teamAntall

c_endTime

c_lastReg

c_startTime

img

**img_id

i_path

i_alt

i_ca

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Tror dette skal fungere. (Med litt forbehold, bare tatt dette i hodet.)

SELECT c.*,i.*

FROM compo c LEFT JOIN compo_pameldt cp ON c.compo_id=cp.compo_id, img i

WHERE cp.compo_id IS NULL

AND i.img_id = c.c_img_id

sub spørring er jo ikke noe god løsning uansett...

Hvorfor skulle det ikke være det? Dette er absolutt en situasjon der sub-spørring er en god løsning. Men hvis du har en eldre versjon av MySQL enn 4.1 så får du prøve dette.

Få høre hvordan det gikk da.

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Takker og bukker.. det var løsningen!! Siste versjon av mySQL så sub-query var utelukket..

edit: Eller ikke helt.. men det gjorde så jeg fant det ut :)

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

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 konto

Logg inn

Har du allerede en konto? Logg inn her.


Logg inn nå

  • Hvem er aktive   0 medlemmer

    Ingen innloggede medlemmer aktive