Jag vill hämta alla poster från tabell A och left joina tabell B och hämta fältet verk_id, men bara om det endast finns en träff. Hur gör jag det smidigast?
T.ex.
SELECT tabell_a.titel, tabell_b.verk_id
LEFT JOIN tabell_b ON tabell_b.rel_id = tabell_a.id
om räkna tabell_b-träffar = 1
Måste jag baka in en till fråga och köra en COUNT eller nåt?
Jag vill alltså få ut fältet titel alltid och verk_id bara om det finns endast en träff (och jag måste då få värdet från fältet verk_id), annars så ska verk_id returnera tomt.
Jag vill alltid hämta allt från tabell_a så jag gissar att det är LEFT JOIN jag ska ha.
Värdet från tabell_b ska bara hämtas om det finns 1 träff där, annars ska det vara null eller 0 eller vad som helst som kan jämföras med.
Ah, då ska du ha en LEFT JOIN, inte INNER som jag skrev i svaret. Som frågan ser ut nu så kommer något bara hämtas ut om det finns precis en matchning i tabell_b, dvs inte om det finns noll matchningar i tabell_b. Jag har även ändrat < till <= i jämförelsen.
SELECT tabell_a.titel, tabell_b.verk_id
LEFT JOIN tabell_b ON tabell_b.rel_id = tabell_a.id
GROUP BY tabell_a.id
HAVING count(tabell_b.rel_id) <= 1;