Citat:
Ursprungligen postat av blackadder1
Otestat så skulle det bli nåt liknande.
Kod:
SELECT p.idPerson, GROUP_CONCAT(d.djurnamn SEPARATOR ',') FROM person p
JOIN Favoritdjur d ON p.idPerson = d.Person_ID
GROUP_BY p.idPerson;
I mitt verkliga problem ska det finnas html med länkar som innehåller id och så har djuren ibland efternamn. Så GROUP_CONCAT passar som sagt inte
Edit: Det jag gör är ett crafting-system till mitt spel. För att göra en Iron-bar kan man behöva 2 Iron-ore. En sak kan behöva flera material. Ett problem jag stötte på nu är att jag måste selecta Items.name 2 gånger, en gång för itemet man vill göra, och en gång för materialet som behövs... Hur ska de gå till?
Om vi ska hålla oss till enklare exempel: Ett djur kan ha flera FavoritDjur, och allting går utifrån IDs så man måste selecta Djur.namn 2 gånger samt göra 2 stycken join, en för djurets namn och en för ett av hans favoritdjur. Detta är det krångligaste SQL-problemet jag någonsin stött på. En 1-många relation inom samma tabell där allt är ID som är kopplat till ett namn.
Edit2: Efter lite googlande stötte på jag "Double join" vilket fick mig att komma fram till den här förfrågningen
Kod:
SELECT Item1.id, Item1.name, Item1.hasMaterial, Mat1.id, Mat1.name,
Item2.id, Item2.name, Item2.hasMaterial, Mat2.id, Mat2.name, CraftingMats.nums
FROM Crafting
INNER JOIN Items AS Item1 ON Crafting.item_id=Item1.id
INNER JOIN Material AS Mat1 ON Crafting.mat_id=Mat1.id
INNER JOIN CraftingMats ON Crafting.id=CraftingMats.craft_id
INNER JOIN Items AS Item2 ON CraftingMats.item_id=Item2.id
INNER JOIN Material AS Mat2 ON CraftingMats.item_mat=Mat2.id
Lägg märke till hur jag gör "INNER JOIN Items" två gånger med AS Item1 och AS Item2 och sedan selectar därifrån.
Nu ska jag bara klura ut ett sätt att skriva ut allt som på bilden i första inlägget.