LEFT JOIN og en slags DISTINCT
Jeg er ved at lave et system til offentliggørelse af pressemeddelelser, hvor jeg skal kunne vælge en skribent, der har skrevet pressemeddelelsen (pm), og en titel, som han har skrevet den under (en skribent skal altså kunne have to forskellige titler til to forskellige pm'er).Til dette har jeg tre tabeller:
* vuvi_press - pressemeddelelsen, overskriften, et timestamp, et id på skribenten, og et id på den titel, skribenten har skrevet pm'en under.
* vuvi_users - skribentens id og navn mm.
* vu_titles - titlens id og selve titlen, samt en parent, da der er forskellige niveauer af titler.
Det jeg skal, er at hente alle recordset ud fra vuvi_press sorteret efter timestamp'et, og så vil jeg LEFT JOIN'e mig til skribentens navn og titlen til den aktuelle pressemeddelelse i samme db-kald.
Problemet er blot, at hvis den samme skribent har skrevet flere pm'er under x forskellige titler, så kommer hver pm med i result-settet x gange med samme navn, men forskellige titler. Jeg har sat en DISTINCT på kaldet, men det afhjælper jo ikke dette problem.
Mit kald ser ud som følger:
SELECT DISTINCT
press1.header,
press1.author, vuvi_users.name,
press2.author_title, vu_titles.title,
press1.content,
press1.url,
DATE_FORMAT(press1.timestamp, '%e/%c %Y') AS timestamp
FROM
vuvi_press AS press1 LEFT JOIN vuvi_users ON press1.author = vuvi_users.id,
vuvi_press AS press2 LEFT JOIN vu_titles ON press2.author_title = vu_titles.id
ORDER BY press1.timestamp DESC;
Det jeg tror, mit problem er, at når jeg join'er vuvi_press på vu_titles, så finder den alle de titles, som skribenten har deri, og så tager den hver pm med tilsvarende antal gange.
Det jeg altså skal bruge, er en metode, hvor den for hver enkel række i vuvi_press går over og slår op i vu_titles, og så returnerer KUN den titel sammen med den tilsvarende række.
Jeg håber, I forstår hvad jeg mener, og at der er nogen, der kan hjælpe mig.
Mvh
Bjørn Amdi Sloth