När jag använder nedstående kod får jag ut alla meddelanden som besökaren har i sina mappar, men jag vill även ha ut de mapparna som inte innehåller några meddelanden. Hur gör jag det? Har trixat lite med outer join, men får inte till det alls.
select pm_subject, folder_name from pm_folders f, pm_mess m, pm p
where p.pm_uid = 1 and
p.pm_current_id = m.pm_id and
p.pm_folder = f.folder_id
Har trixat lite mer och knåpat ihop nedstående. Meningen är att den ska lista alla användarens mappar, samt antalet meddelanden i mapparna. Tyvärr så får jag samma fel som ovan (dvs. mappar utan meddelande visas inte alls). Hur gör jag?
SELECT folder_name, count( * ) AS Antal
FROM pm AS p
RIGHT OUTER JOIN pm_folders ON pm_folders.folder_uid = 1
WHERE pm_folders.folder_uid = 1 AND p.pm_folder = pm_folders.folder_id
GROUP BY folder_name LIMIT 0 , 30
Lite tabellstruktur kanske:
pm:
pm_current_id int(11) NOT NULL default '0',
pm_uid int(11) NOT NULL default '0',
pm_folder int(11) NOT NULL default '0'
pm_folders:
folder_id int(11) NOT NULL auto_increment,
folder_name varchar(25) NOT NULL default '',
folder_uid int(11) NOT NULL default '0',
pm_mess
pm_id int(11) NOT NULL auto_increment,
pm_mess text NOT NULL,
pm_subject varchar(150) NOT NULL default '',
SELECT folder_name, folder_id, count( * ) AS Antal
FROM pm AS p
RIGHT OUTER JOIN pm_folders ON p.pm_folder = pm_folders.folder_id
where pm_folders.folder_uid = 2
GROUP BY folder_name LIMIT 0 , 30
Nu funkar den nästan. Det enda som blir fel är om en mapp inte innehåller några meddelanden så står det 1 istället för 0. Annars så ser allt ut att stämma. :) Tips?