Oavsätt om jag byter ut inner till Left eller right så visas inner join resultatet. Använd en outer join och säg att den högra sidan ska tas med (eftersom objecttype är på den "högra" sidan). Om du byter till "LEFT JOIN objecttype ot ON ot.id = ob.typeid" borde det fungera. Jag gissar att det är något annat fel. Vad händer om du tar bort objecttype helt från frågan, blir resultatet som du tänkt dej då? Nix, varken LEFT eller RIGHT fungerar, det ger samma resultat. Frågan i sig ser ganska konstig ut, verkar lite ologiskt att du vill göra en left join på objecttype när det är den som det mesta bygger på. Vad är det du vill åstadkomma? Vilken information finns i de olika tabellerna? Jag skulle för tydlighetens skull slänga om tabellerna lite Denna listar faktiskt alla rader som de skall, men lägger jag till kolumnerna "o.Rate" och "o2.Rate" så visar de fel resultat. Ok, då är frågan vad som är rätt och vad som är fel? Grupperingen innebär ju att du kan få med flera o och o2 vilket du själv har insett eftersom du har med COUNT(o2.objectid).Left join funkar inte...
Jag skulle vilja ha alla poster ifrån tabellen "objecttype" oavsätt om personerna har poster eller ej.
Hur gör jag det?SELECT ot.id, ot.typename, count(o.objectid) commonCount, abs(o.Rate-o2.Rate) diff
FROM objectsusers o
inner JOIN objectsusers o2 ON o.objectid=o2.objectid
inner JOIN objects ob on o.objectid = ob.id
inner JOIN objecttype ot ON ot.id = ob.typeid
WHERE o.username = 'kalle' and o2.username = 'pelle'
group by ot.id
Sv: Left join funkar inte...
<code>
SELECT ot.id, ot.typename, count(o.objectid) commonCount, abs(o.Rate-o2.Rate) diff
FROM objectsusers o
inner JOIN objectsusers o2 ON o.objectid=o2.objectid
inner JOIN objects ob on o.objectid = ob.id
RIGHT OUTER JOIN objecttype ot ON ot.id = ob.typeid
WHERE o.username = 'kalle' and o2.username = 'pelle'
group by ot.id
</code>Sv: Left join funkar inte...
/JohanSv:Left join funkar inte...
Jag kan inte ta bort tabellen "objecttype" för det är den som hela frågan bygger på, och jag grupperar ju även med en column ifrån den (tabellen).Sv: Left join funkar inte...
/JohanSv: Left join funkar inte...
<code>
SELECT ot.id, ot.typename, COUNT(o.objectid) commonCount, ABS(o.Rate-o2.Rate) diff
FROM objecttype ot
LEFT JOIN objects ob ON ob.typeid = ot.id
LEFT JOIN objectsusers o ON o.objectid = ob.id
LEFT JOIN objectsusers o2 ON o2.objectid = ob.id
WHERE o.username = 'kalle' AND o2.username = 'pelle'
GROUP BY ot.id
</code>Sv:Left join funkar inte...
Fattar inte varför.
<code>SELECT ot.id, ot.typename, COUNT(o2.objectid) uCount
, o.Rate KalleRate
, o2.Rate PelleRate
FROM objecttype ot
LEFT JOIN objects ob ON ob.typeid = ot.id
LEFT JOIN objectsusers o ON o.objectid = ob.id AND o.username = 'Kalle'
LEFT JOIN objectsusers o2 ON o2.objectid = ob.id AND o2.username = 'Pelle'
GROUP BY ot.id</code>Sv: Left join funkar inte...
Hur allting visas beror på din data. En Group By grupperar helt rått alla rader, och finns det två olika värden på Rate i någon av fallen vet du inte vilket av värdena du får ut.
Om det bara finns ett unikt värde ska den ge rätt...Sv: Left join funkar inte...
Det kanske är något sådant här du vill ha.
<code>SELECT ot.id, ot.typename, COUNT(o2.objectid) uCount
, SUM(o.Rate) KalleRate
, SUM(o2.Rate) PelleRate
FROM objecttype ot
LEFT JOIN objects ob ON ob.typeid = ot.id
LEFT JOIN objectsusers o ON o.objectid = ob.id AND o.username = 'Kalle'
LEFT JOIN objectsusers o2 ON o2.objectid = ob.id AND o2.username = 'Pelle'
GROUP BY ot.id</code>
eller
<code>SELECT ot.id, ot.typename, COUNT(o2.objectid) uCount
, MAX(o.Rate) KalleRate
, MAX(o2.Rate) PelleRate
FROM objecttype ot
LEFT JOIN objects ob ON ob.typeid = ot.id
LEFT JOIN objectsusers o ON o.objectid = ob.id AND o.username = 'Kalle'
LEFT JOIN objectsusers o2 ON o2.objectid = ob.id AND o2.username = 'Pelle'
GROUP BY ot.id</code>
Med någon form funktion (AVG, MAX, MIN, SUM etc) på o.Rate och o2.Rate bör du kunna få riktiga svar från frågan.