MySQL/PHP Tagg-system
Hej alla på WN!
Jag försöker att bygga ett tagg-system liknande Wordpress. Men jag förstår inte riktigt hur jag ska formulera MySQL syntaxen, och skulle uppskatta lite hjälp på den fronten. Jag har googlat en del, men haft svårt att förstå koden och därför inte kunnat applicera det på mitt egna script. Jag har en databas med 3 tabeller: imgs - Min tabell med bilder. id_imgs - Primarykey title - Titel för bild tags - Tabell med taggarna id_tags - Primarykey safe_tag - Taggnamnet för url-friendly tag_name - Riktiga namnet på taggen tags_ref - Tabell med referens över taggar och bild id_tags_ref - Primarykey (nog överflödig, men känner ändå att kan va bra att ha) tag_id - ID nummer för vilken tagg ifrån 'tags'-tabellen med foreignkey row_id - ID nummer för vilken bild 'imgs'-tabellen den tillhör Jag har sett olika sätt att göra det på, men tror att det är någon av de alla olika JOIN jag ska använda. Men när jag läser igenom andras syntax så blir jag bara förvirrad. Någon som kan hjälpa mig hur min query ska se ut, och försöka förklara den så jag förstår? Har nu suttit i flera dagar och googlat, och provat utan att få något vettigt resultat. Har lite tidigare erfarenhet av PHP/MySQL men aldrig egentligen använt mig av JOINS eller one-to-many-relationship. |
Vad är det för resultat du vill ha?
Taggar till en specifik bild? Alla bilder med tillhörande taggar? Bilder som har en specifik tagg? |
Citat:
|
Kod:
SELECT imgs.title Kod:
SELECT imgs.title Någon pedagogisk förklaring kan jag inte bidra med tyvärr, då jag är sämst på att förklara hur det fungerar. EDIT: Läs om hur LEFT JOIN fungerar, så borde du förstå hur den skapar relationer Om du är van vid att göra dessa utan joins så kan du jämföra de två versionerna jag skapade och kanske få bättre förståelse. |
Sjukt nice, körde det MySQL Workbench och fick fram rätt resultat. Nu när jag har en fungerande kod kan jag utgå ifrån denna för att få ett mycket bättre begrepp om hur JOINS fungerar.
Det jag har haft störst problem med är i vilken ordning de ska slås ihop. Du anar inte hur tacksam jag är - suttit så länge för att försöka få det här att gå ihop! Jag har endast testat det övre exemplet - är det någon fördel/nackdel att använda joins över det andra? |
Jag tror att köra allt i en WHERE är en utdaterad metod.
I princip så börjar du med FROM, från antingen imgs eller tags Sen gör ju en LEFT JOIN med den mellanliggande tabellen tags_ref. Slutar med LEFT JOIN på det som blev över från steg 1. Det fungerar åt båda hållen. Vad som är bäst vet jag inte. |
Okay, tackar så mycket! Håller nu på för fullt att bygga klart mitt tag-system och det går som på räls just nu. Kommer nog att använda denna post som referens punkt för mina näst kommande joins. ;)
|
Alla tider är GMT +2. Klockan är nu 10:20. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson