Vinnaren i pepparkakshustävlingen!
2009-03-06, 12:28
  #1
Medlem
Kaustis avatar
Jag har tre tabeller:

blog_comment
blog_posted
blog_rating


Sen vill jag hämta lite saker från dom:

Kod:
SELECT count(blog_comment.posted_id) as NOCblog_posted.idblog_posted.headline as headlineblog_posted.timestamp as timestampmax(blog_comment.timestamp) as maxCommentROUND(avg(blog_rating.rating)) as ratingcount(blog_rating.id) as numOfRatings
from blog_posted JOIN blog_comment
on blog_posted
.id=blog_comment.posted_id JOIN blog_rating
on blog_comment
.posted_id=blog_rating.post_id
group by blog_posted
.id 

Det funkar fint om det finns minst en röst + minst en kommentar på inlägget jag vill hämta. Har inlägget fått 10 röster, men inte kommenterats så kommer det inte med i min utskrift. Hur löser jag det så att det blir en utskrift såfort som ett av kriterierna stämmer?

Jag kollade på vanligt SQL, och FULL JOIN verkar göra det jag vill: "FULL JOIN: Return rows when there is a match in one of the tables". Dock funkar det inte i mysql verkar det som

SÄkert pissvirrigt förklarat också
Citera
2009-03-06, 12:34
  #2
Medlem
gadzooxs avatar
Citat:
Ursprungligen postat av Kausti
Jag kollade på vanligt SQL, och FULL JOIN verkar göra det jag vill: "FULL JOIN: Return rows when there is a match in one of the tables". Dock funkar det inte i mysql verkar det som
Du kan simulera det med left- och right outer join:

Kod:
SELECT *
FROM   employee 
       LEFT JOIN department 
          ON employee.DepartmentID = department.DepartmentID
UNION
SELECT *
FROM   employee
       RIGHT JOIN department
          ON employee.DepartmentID = department.DepartmentID
WHERE  employee.DepartmentID IS NULL

http://en.wikipedia.org/wiki/Join_%2...ull_outer_join
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback