Vinnaren i pepparkakshustävlingen!
2010-02-23, 20:56
  #1
Medlem
Rutendos avatar
Håller på att koda en blogg med möjlighet att spara taggar.

Taggarna kommer att sparas i en skilld tabell och i samma tabell kommer det sparas taggar från ett fotoalbum! Taggarna från fotoalbumet och bloggen kommer att skiljas från varandra med fältet type.

Kod:
SELECT userid, subject, blog, date, text from blog LEFT JOIN tags ON blog.id=tags.itemid WHERE blog.userid=1 
Printar ut alla blogg inlägg även de utan taggar ( så ska det vara ) men för att kolla om tags.type=1 använder jag

Kod:
SELECT userid, subject, blog, date, text from blog LEFT JOIN tags ON blog.id=tags.itemid WHERE blog.userid=1 AND tags.type=1

Nu visas bara de inlägg som har taggar sparade, varför undrar jag och hur ska jag lösa det?
Citera
2010-02-23, 21:05
  #2
Medlem
De blogginlägg som inte har taggar kommer inte att ha tags.type=1.
Vilket gör att de inte syns.

Tyvärr kommer jag inte på någon lösning just nu.
Citera
2010-02-23, 21:17
  #3
Moderator
Protons avatar
LEFT JOIN kommer ju att göra att de inlägg som inte har taggar kommer få tags.type=NULL. Borde du inte kunna utnyttja det på något sätt?

Förstår ärligt talat inte riktigt problemet heller. Ditt wherevillkor anger du att userid ska vara lika med ett och tagid ska vara lika med ett. Hur hade du tänkt få ut nånting annat än det som uppfyller bägge villkoren med en sån sats?

Du kanske kan UNIONa ihop 2 frågor, en utan tagmojängen och en med?
Citera
2010-03-02, 01:37
  #4
Medlem
Umbras avatar
Om jag förstår dig rätt så ska du ha kontrollen av tags.type i ON-klausulen, inte i WHERE. Så här:
Kod:
SELECT userid, subject, blog, date, text from blog
LEFT JOIN tags
ON blog.id=tags.itemid AND tags.type=1
WHERE blog.userid=1
Nu kommer den att visa alla bloginlägg och taggar som har typ 1.
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