03. august 2007 - 17:11Der er
7 kommentarer og 1 løsning
Ligge sammen fra flere forskellige tabeller (sql)
Jeg har 4 tabeller hvor i spillerne af mit spils items ligger.
Jeg har 1 tabel der fortæller hvilke items hver bruger har. Den database peger på de andre databaser, og det er faktisk her mit problem er. Jeg kan ikke finde dem den peger på og ligge deres indhold sammen :S
Jeg vil gerne have lagt alle de forskellige stats sammen fra hver database hvor ens UserId passer med.
Lad os f.eks. andtage at man har en post i LovehinaItems2 tabellen med ens id OG hvor pre = '3' så skal den tage alle stats fra den post med id = '3' i LoveHinaITEMprefix tabellen og ligge sammen med alle de andre.
Både made, pre og post kan være sat til noget der skal findes i en af de andre, men det kan også ske at kun 1 eller 2 af dem er sat til andet end 0.
LovehinaItems2: id int(11) userid int(9) Nej 0 made int(9) Nej 0 pre int(9) Nej 0 post int(9) Nej 0
LoveHinaITEMmade: id int(11) hp int(11) Nej 0 mp int(11) Nej 0 cash int(11) Nej 0 char int(11) Nej 0 int int(11) Nej 0 str int(11) Nej 0 fan int(11) Nej 0 cook int(11) Nej 0 tpt int(11) Nej 0 maxturns int(11) Nej 0
LoveHinaITEMprefix id int(11) hp int(11) Nej 0 mp int(11) Nej 0 cash int(11) Nej 0 char int(11) Nej 0 int int(11) Nej 0 str int(11) Nej 0 fan int(11) Nej 0 cook int(11) Nej 0 tpt int(11) Nej 0 maxturns int(11) Nej 0
LoveHinaITEMpostfix id int(11) hp int(11) Nej 0 mp int(11) Nej 0 cash int(11) Nej 0 char int(11) Nej 0 int int(11) Nej 0 str int(11) Nej 0 fan int(11) Nej 0 cook int(11) Nej 0 tpt int(11) Nej 0 maxturns int(11) Nej 0
Okay, hvis jeg har forstået det rigtigt, så er pre og id det samme.
<?php
$id = $_SESSION["userid"];
$getStats = mysql_query(" SELECT LoveHinaITEMmade.hp as table1_stats, LoveHinaITEMprefix.hp as table2_stats, LoveHinaITEMpostfix.hp as table3_stats FROM LoveHinaITEMmade, LoveHinaITEMprefix, LoveHinaITEMpostfix WHERE LovehinaItems2.userid='$id' AND LoveHinaITEMmade.id='$id' AND LoveHinaITEMprefix.id='$id' AND LoveHinaITEMpostfix.id='$id' ") or die(mysql_error());
$showStats = mysql_fetch_array($getStats);
$getSumStats = array_sum($showStats);
?>
Så skal du bare gøre det her ved alle dem der skal lægges sammen.
ah æv, skrev mit svar tidligere men det er åbenbart ikke kommet så prøver igen..
Har vidst ikke fået forklaret mig helt korrekt.
Den første del ser rigtig ud, men når vi kommer ned til AND så går det vidst galt.
LoveHinaITEMmade.id skal svare til LovehinaItems2.made
Altså LovehinaItems2.userid er brugeres id, det ser rigtigt nok ud, der i står så id'erne på de poster i de andre databaser der skal bruges, f.eks. er LovehinaItems2.made id'en på en post i LoveHinaITEMmade der skal bruges
For hele pointen er jo netop at jeg kan tilføje items til de forskellige databaser uden at tilføje dem til en enkelt bruger :)
lige nu er der kun 50 poster i hver af de 3 databaser; LoveHinaITEMmade, LoveHinaITEMprefix og LoveHinaITEMpostfix.
Men der er over 10.000 posts i LovehinaItems2. (brugere har altså fundet over 10.000 items der består af dele fra de andre databaser)
Skal jeg så finde de items en bruger har. så printer jeg dem ud med koden nedefor (der også tager højde for om det er premade item LoveHinaITEMmade eller et random generated item der består af en base og et pre og/eller et post fix :)
$query = mysql_query("SELECT * FROM LovehinaItems2 where userid = '$ID' ORDER BY color desc,slot") or die(mysql_error()); if (mysql_num_rows($query) == 0) { echo 'You dont have any items yet!<br>'; } else { echo '<table width="100%" id="list" class=itemtable><tr><td width=130><b>Name</b>:</td><td><b>Text</b>:</td><td></td></tr>';
while($row = mysql_fetch_array($query)) {
if ($row[made] > 0) { $hent6 = mysql_query("SELECT * FROM LoveHinaITEMmade WHERE id = '$row[made]'") or die(mysql_error()); $vis6 = mysql_fetch_array($hent6); $navnet = $vis6[name]; $descstr = $vis6[description]; $slot = $vis6[slot];
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.