Jeg har haft det samme problem længe, har læst alle steder, og kan simpelthen ikke få det til at fungere.
Jeg har en tabel med navnet "personer", som har følgende indhold:
id - navn 1 - Ole 2 - Hans 3 - Erik
Og så har jeg en tabel der hedder "point", som har følgende indhold:
personid - point 1 19 2 25 1 20 3 44 2 28 1 1
Tabellen fortæller i forhold til værdien "personid" hvor mange point de forskellige personer har fået. "personid" svarer naturligvis til "id" i tabellen "personer".
Nu er det så at jeg vil have sorteret resultatet efter hvor mange point de forskellige personer har fået, så det kommer til at se således ud:
Hmm jeg har rodet med det længe, og har som sagt ledt en del steder. Det har været en hurdle for mig i et stykke tid, og derfor ville jeg give mange point for det.
Men jeg vil også meget gerne have at vide, hvordan jeg echo'er resultatet?
Altså ikke kun den SELECT query, men også meget gerne resten så det kan vises i et table som dette:
Mit eksempel antager at du har disse to tabeller i din databasen:
CREATE TABLE `personer` ( `id` TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY, `navn` VARCHAR(50) NOT NULL );
CREATE TABLE `points` ( `id` TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY, `personid` TINYINT NOT NULL, `point` TINYINT NOT NULL );
Og sådan skal din forespørgsel være:
SELECT *, SUM(point) AS points_ialt FROM personer, points WHERE personer.id = points.personid GROUP BY personer.id ORDER BY points_ialt DESC LIMIT 0, 10
Hvis du skal have sprøjtet resultatet ud til browseren bør du bruge flg. kode:
<table> <?php connect(); //der connectes til DB $foresp = mysql_query("SELECT *, SUM(point) AS points_ialt FROM personer, points WHERE personer.id = points.personid GROUP BY personer.id ORDER BY points_ialt DESC LIMIT 0, 10"); while($res = mysql_fetch_array($foresp)){ echo "<tr><td>".$res[navn]."</td><td>".$res[points_ialt]." point</td></tr>"; } close(); //forb. til DB lukkes igen ?> </table>
hansk >> jeg kan ikke se hvordan dit forslag skal kunne virke? Det er jo en en-til-mange database, så der er nødt til at være en primary-key i tabellen med points...! 'personid' er jo ikke unik da den findes på mange-siden i vores join. Det samme personid optræder mange gange i tabellen.
Derfor virker dit bud ikke i denne sammenhæng. Det er beregnet på en en-til-en database!
Der er ikke noget der hedder en-til-mange database. Derimod er der noget der hedder relationel database, som er den mest almindelige type som anvendes i dag. Det du blander sammen er relationer, hvor der findes flere typer, hvoraf du har listet nogle.
Ok, du vinder... har også set på din profil, at du har besvaret milliarder af spm. omkring databaser, så du ved nok en smule om det.
Jeg tror faktisk også det var dig der forklarede mig det dengang jeg selv lærte, hvordan man bruger relationer *LOL*
Du er mesteren *GG* Men dit første bud virkede ikke anyway :o)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.