Avatar billede nyb Nybegynder
20. marts 2004 - 23:57 Der er 5 kommentarer

Data fra flere tabeller

Undskyld slam kode, men det har virket fint!.

Den selecter fra een tabel tb1.
Hvordan kan jeg udvide til at selecte data fra flere ens tabeller?. Det er tabeller med flere tusind poster, hvor kun året er forskellig.
Altså data fra tb1 tb2 tb3 tb4 og tb5.
Har prøvet at selecte sådan select from tb1,tb2,tb3,tb4,tb5 where
osv, men det giver en fejl:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /net/users/a22/222/xxxxxxx/yy/seekresult_bjora.php on line 10

Koden ser sådan ud:

<?
if ($Vald == "Alle vald"){{
$connection = mysql_connect("xx","xx","xx"); //indstillinger omkring Mysql database
mysql_select_db("xx", $connection) or die ("Problem connecting to DataBase");

$result1 = mysql_query("select AVG(vekt) AS avgvekt from tb1
where dato like '%$Md%'
and fisker like '%$seek%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'");
$myrow = mysql_fetch_array($result1);
$avg=$myrow["avgvekt"];
$rounded = round($avg,2);

$result2 = mysql_query("select SUM(vekt) AS total from tb1
where dato like '%$Md%'
and fisker like '%$seek%'
and vekt BETWEEN '$minVekt' AND '$maxVekt'");
$myrow1 = mysql_fetch_array($result2);
$tot=$myrow1["total"];

$result = mysql_query("select dato, vald, fisker, vekt, redskap from tb1
where dato like '%$Md%'
and fisker like '%$seek%'
and vekt BETWEEN '$minVekt' AND '$maxVekt' order by vekt desc");
$number = mysql_num_rows($result);

if ($Md == ".05."){
$change_date = "Maj";
} else if ($Md == ".06."){
$change_date = "Juni";
} else if ($Md == ".07."){
$change_date = "Juli";
} else if ($Md == ".08."){
$change_date = "August";
} else if ($Md == "Vælg periode"){
$change_date = "Vælg periode";
} else if ($Md == ""){
$change_date = "Hele sæsonen";
}


print "<font face=verdana size=1>Din søgning på: - <b>$seek</b> - <b>$Vald</b> i <b>$change_date</b> med vægt mellem <b>$minVekt</b> kg og <b>$maxVekt</b> kg fandt <b>$number</b> fangster sorteret efter vægt. Gennemsnitsvægt: <b>$rounded</b> kg. Totalvægt: <b>$tot</b> kg.</font><br><br>" ;
print ("<table width=100%>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Dato</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Vald</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Fisker/Roer</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Vekt</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Redskap</b></font></td>");
print ("<td bgcolor=ABAB81><font face=verdana color=663333 size=2><b> Art</b></font></td>");
while ($row = mysql_fetch_array($result)) {
print("<tr>");
print("<td><font face=verdana size=1> $row[dato]</font></td><td><font face=verdana size=1><b> $row[vald]</b></font></td><td><font face=verdana size=1> $row[fisker]</font></td><td><font face=verdana size=1><b> $row[vekt]</b></font></td><td><font face=verdana size=1> $row[redskap]</font></td><td><font face=verdana size=1> $row[laks_sjøørret]</font></td>");
print("</tr>");
}
}
print("</table>");

På forhånd tak!
Avatar billede trer Nybegynder
22. marts 2004 - 15:40 #1
prøv en

select * from tb1
union all
select * from tb2
union all
select * from tb3

Muligvis skal du fjerne "all" - men det finder du ud af.
Avatar billede defrost Nybegynder
24. marts 2004 - 16:48 #2
Jeg vil nok oprette en merge-tabel (http://www.mysql.com/doc/en/MERGE.html), hvis de andre tabeller er ens. Så kan du nøjes med at lave en select ned i den tabel. Så slipper du også for at ændre i koden, hvis (når?) der kommer en ny tabel med nye årstal.
Avatar billede tigertool Nybegynder
08. maj 2004 - 01:53 #3
Hvis du kan komme med en struktur over dine tables, kan jeg måske hjælpe. Skriv også lige hvilke felter du til have returneret. Måske kan en join løse dit problem, men jeg kan ikke helt se hvad du mener udfra ovenstående beskrivelse.
Avatar billede rednex Nybegynder
09. maj 2004 - 13:56 #4
Hvis alle tabellerne er ens kan du bruge en UNION:

SELECT * FROM tb1
UNION SELECT * FROM tb2
UNION SELECT * FROM tb3
osv.
Avatar billede tigertool Nybegynder
14. februar 2005 - 18:37 #5
Tid til at lukke?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester