Jag fattar nog inte riktigt vad du vill uppnå. Vill du ha ut alla rader från tabell_a för vilka det finns minst en matchande rad i tabell_b? I så fall använder du:
SELECT *
FROM tabell_a
WHERE EXISTS(SELECT * FROM tabell_b WHERE b_parent_id = a_id)
4 svar · 1 625 visningar · startad av bassebhu
Hej igen alla glada!
Jag har nu lyckats lista mina huvudposter från tabell_a med tillhörande språkposter från tabell_b. När jag skriver ut det får jag dock en rad per språkpost och inte en rad per huvudpost. Vilket alltså är det jag behöver hjälp med :)
Min kod just nu:
SELECT * FROM tabell_a
INNER JOIN tabell_b
ON a_id = b_parent_id
Låt säga att detta hittar Post 1 i tabell_a och en svensk och en engelsk post i tabell_b. Nu skrivs det ut:
Post 1 (Svenska)
Post 1 (Engelska)
Hur får jag det att bara skriva ut:
Post 1
GROUP BY? DISTINCT?
Edit/ Jag skulle kunna lägga till ett WHERE b_lang = 'sv' och bara få ut dessa poster, men kommer jag då åt att kolla om det finns någon engelsk post utan att göra en loop per post som jag har förstått är det dummaste man kan göra? :e
---
Från början skapas alltid en huvudpost i tabell_a och en svensk post i tabell_b. Därefter kan man lägga till en engelsk post om man vill...
Fråga två med lite smyg-PHP är därefter: när jag skriver ut raderna, hur kollar jag om det finns någon engelsk post eller inte? Jag skriver nämligen ut en redigeringsknapp vid varje rad och om det inte redan finns en engelsk post vill jag skriva ut en lägg till-knapp och annars en redigeringsknapp.
Tack för hjälp!
Jag fattar nog inte riktigt vad du vill uppnå. Vill du ha ut alla rader från tabell_a för vilka det finns minst en matchande rad i tabell_b? I så fall använder du:
SELECT *
FROM tabell_a
WHERE EXISTS(SELECT * FROM tabell_b WHERE b_parent_id = a_id)
Det skapas alltid en post i tabell a (huvudposterna) och en i b (språkpost på svenska). Därefter kan man lägga till ytterligare en språkpost på engelska i tabell b om man vill. Det finns alltså alltid minst en post i tabell b som hör till huvudtabellen.
Det jag vill göra är att hämta alla poster i tabell a och komma åt de svenska språkposternas data i tabell b också (varav min join), MEN för varje rad jag skriver ut vill jag med php kunna kolla om det finns en engelsk språkpost också (fältet b_lang innehåller antingen 'sv' eller 'en').
Med min kod skrivs det ut dubletter för alla poster som även har en engelsk post. Jag vill slå ihop dem till en post och samtidigt kunna göra en if-sats och kolla om det finns en engelsk post eller inte.
Går att förstå hehe? Tack!
Okej,
Vad sägs om:
SELECT tabell_a.*, tabell_b.*,
(SELECT COUNT(*) FROM tabell_b WHERE b_lang = 'en' AND b_parent_id = a_id) hasEnglish
FROM tabell_a
INNER JOIN tabell_b
ON a_id = b_parent_id
AND b_lang = 'sv'