25. maj 2002 - 21:14Der er
18 kommentarer og 1 løsning
Select minus select
Hejsa - jeg håber I har lyst til at hjælpe en meget let øvet Mysql-nybegynder.
Jeg har to tabeller tabel1 og tabel2 som hver har en kolonne der hedder user. Jeg kører en query med et antal kriterier på tabel1 og får nogle rækker kun med kolonnen user. For hver af disse 'user' skal jeg nu tjekke, at der ikke findes en række i tabel2 med tabel1.user=tabel2.user
Det går fint når jeg putter WHERE-kriterier på, som tjekker på tabel1, men jeg får et tomt resultat når jeg tester på tabel2. Skal det være negativ/omvendt testning, eller hvad? Eller kan du forklare hvad LEFT JOIN og u2.user IS null gør?
Okay - nu hed den så 'owner' og ikke 'user'. 'user' er en kolonne, der skal testes på i tabel2, og 'owner' skal testes på i tabel1.
SELECT tabel1.owner FROM tabel1 LEFT JOIN tabel2 ON tabel1.owner = tabel2.owner WHERE tabel2.owner IS NULL AND tabel1.kategori=2 AND tabel1.owner<>'admin' AND tabel2.user='mig'
ahhh. jeg ser din pointe. Men det er jo fordi det kun er i tilfældet at tabel2.user='mig' OG tabel2.owner=tabel1.owner, at den skal udelukkes. Og det har jeg netop puttet ind: SELECT tabel1.owner FROM tabel1 LEFT JOIN tabel2 ON tabel1.owner = tabel2.owner AND tabel2.user='mig' WHERE tabel2.owner IS NULL AND tabel1.kategori=2 AND tabel1.owner<>'admin' Og det virker :)))
Iøvrigt, hvor ser jeg en beskrivelse af de forskellige funktioner/clauses/statements osv. osv.? I manualen kan jeg kun finde Join Syntax, men ikke nogen beskrivelse af Join-funktionerne
Nu jeg har dig - du kan få flere point senere - ville jeg lige spørge: Kan man også bruge LEFT JOIN osv. på UPDATE? Altså, hvis jeg nu ville ændre på netop de rækker, som kommer ud af ovenstående select-query.
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.