Ik ben bezig met een spel waar je muntjes kunt verdienen (in php en mysql), maar ben tegen een probleempje aangelopen! Ik wil een winkel maken en heb in de database een tabel van 'winkel' met daarin een kolom 'prijs'.
Alleen nu heb ik nog een tabel 'badges' die ik ook in de winkel wil met ook een kolom 'prijs'.
Nu wil ik op de winkel pagina al die dingen samenvoegen tot één en dan op de prijs laten sorteren! Alleen ik krijg het niet voor elkaar om ze samen te voegen! Heeft iemand idee hoe ik dit moet doen?
maar om het netjes te maken zal overal wel de tabelnaam voor moeten staan!
Dit is idd ook nodig als je dezelfde collomnamen heb ik verschillende tabellen, zoals bij jou 2x naam!
Mooiste is nog als je dubelle collomnamen een andere naam geeft achter select, kan je ze in PHP beter uit elkaar houden later.
Zoals: SELECT winkel.naam AS naampy, badges.naam AS naaaaam
btw , die 'badges_id' heet 'badge' (was ff vergeten )
< dus zo wil ik en alle rijen uit de tabel 'winkel' en alle rijen uit de tabel 'badges' laten weergeven en dan alle dingen weer op prijs gesorteerd... (ff voor de duidelijkheid.. )
Je bedoelt dus dat je alle artikelen uit badges én uit winkel op wilt halen en sorteren?
Volgens mij heb je dan niet echt veel aan een join...
Ik weet ook niet hoe je de resultaten achter elkaar kunt plakken en dan ook nog sorteren, ik weet ook niet of dat wel kan. Ik heb even gezocht maar ik kan nog niets vinden, het gaat allemaal over joins.
Je zou het wel in php op kunnen lossen, maar dat wordt waarschijnlijk niet heel erg snel... Dan moet je het per tabel ophalen en dan in php gaan sorteren.
Het is wrs makkeiljker op te lossen door je tabellen te normaliseren. Je maakt dan een tabel:
"products" met de volgende velden:
- id
- name
- price
- cat
En van cat maak je een enum veld waar "winkel" of "badges" oid in kan staan. Als je dat nog verder wilt normaliseren kan je daar ook weer tabel voor maken met verschillende categorieën, maar dat is in jouw geval wrs niet echt nodig.
Met een simpel scriptje kan je dan de bestaande gegevens overzetten naar de nieuwe tabel.
Als ik jou was zou ik dat eens proberen. Dat zal je in de toekomst nog veel moeite besparen als je systeem steeds groter wordt!
Je kan ook even kijken bij de w3school site, die leggen het simpel uit
allemaal wat de basis dingen zijn van sql query's.
En alles kan je sorteren in een query, dus INNER JOIN ook!
Nu raad ik je aan om wel te normaliseren, maar daarin niet te diep
te gaan omdat vaak database programmeurs vergeten dat het ook
gebruikt moet worden
Dus doe het niet extreem het normaliseren zoals mijn database leraar doet, die weet van 1 tabbel soms wel 100 tabellen te maken!
En dan blijf je JOINEN dat als resultaat heeft dat he overaicht kwijt raakt!
De query ziet er goed uit trouwens, maar voor de zekerheid kan je
AS gebruiken zodat je zeker weet de juiste tabel naam te hebben.
Anders geef je de database een vije wil om collom namen te geven,
meestal geven ze gewoon de attribuutnaam zelf maar als er een dubbele is gaat hij trippen
EN TROUWENS, ik zie dat je prijs wilt weergeven?
Maar die staat NIET in je select, dus wordt ook niet opgehaald!
Ja, ik doe altijd SELECT * FROM, maar ik had die query ff overgekopierd..
Iemand anders zei ook al dat ik gewoon alles in één tabel moet doen, en dat ga ik misschien ook doen! Ik vraag zelf ook af of het wel wil wat ik wil En ik kom ook steeds bij 'JOIN' terecht, en omdat ik daar niks van af weet, doe ik toch alles maar in één tabel (moet wel gedeelte van m'n systeem weer ombouwen )
Iedereen die me geholpen heeft: hartelijk bedankt!:!:
EDIT: Ik zit nu net die code van Tony_mortana nog eens goed te bekijken, maar ik zie nu dat daar dubbele 'AS'en in zitten enzo ! die zal ik morgen ook nog ff uitproberen..