Jag har en databas med tre tabeller tbl_users, tbl_a och tbl_b. Den förstnämnda tabellen innehåller användare, och de två övriga är tabeller för sådant som användarna själva kan lägga till. Tabellerna är länkade enligt tbl_users.us_id = tbl_a.a_id = tbl_b.b_id. Bland fälten i tabellerna finns också tbl_users.us_checked, tbl_a.a_checked och tbl_b.b_checked.
Jag vill hämta värdena från de tre checked-kolumnernerna. Problemet är att jag inte på förhand vet ifall det finns poster i tabellerna tbl_a och tbl_b som stämmer med tbl_users; jag kan alltså inte använda ...WHERE us_id = a_id = b_id... eftersom villkoret bara är uppfyllt om användaren har lagt något i tabellerna a och b.
Jag har testat INNER JOINs, IFNULL(a_checked, 0) och en massa andra grejer men jag får det bara inte att fungera. Är det någon som har ett tips är ni grymt välkomna att dela med er!
Innan du gör SQL frågan så gör nån if-sats där du kollar om det just det id:et finns i tabell tbl_a och tbl_b ... och gör olika SQL frågor utifrån det.
Vet inte om hur du lägger till medlemmarna. Annars kan du ju bara göra en "row" med det id:et när medlemmen signar upp sig så vet du ju att det id:et finns där.. även fast det inte står info i de övriga kolumnerna...
Kan säkert gå att lösa med sql på nåt sätt.. men jag kan inte :)
SELECT
us_id, (IFNULL(!(us_checked), 0) |
IFNULL(!MAX(a_checked), 0) |
IFNULL(!MAX(b_checked), 0)) AS notChecked
FROM tbl_users
LEFT JOIN tbl_a
ON (us_id = a_id)
LEFT JOIN tbl_b
ON (us_id = b_id)
GROUP BY us_id";
Denna kod sammanställer checked-fälten i de tre tabellerna och visar med 1/0 om det finns något hos användaren som inte är checkat än. Koden hanterar även NULL-värden, och störs därmed inte om användaren inte har något i tabell a eller b.
Tack för hjälpen!
/a
259 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2