webForumDet fria alternativet

Koppla tabeller

Databaser & SQLur Databashanterare & SQL

10 svar · 207 visningar · startad av web00132

Medlem sedan maj 2001797 inlägg
Frågan#1

Jag har glömt bort hur man gör detta.
Jag har 2 tabeller: ord, bok
Jag vill ta fram posterna "engelska" och "svenska" från "ord", och posterna "titel" och "forfattare" från "bok". Min sats såg först ut såhär:

SELECT engelska, svenska, titel, forfattare FROM ord, bok WHERE bokID = " . $HTTP_GET_VARS[bok] . " AND bok.bokID = ord.bokID ORDER BY engelska;

Detta funkade inte, då gjorde jag två satser, det funkade:

SELECT engelska, svenska FROM ord WHERE bokID = " . $HTTP_GET_VARS[bok] . " ORDER BY engelska;
SELECT titel, forfattare FROM bok WHERE bokID = " . $HTTP_GET_VARS[bok] . ";

Men jag vill bara ha en sats, hur göra?

Medlem sedan dec. 200012 464 inlägg
#2

Vad är det för problem med ditt första fösök?

Medlem sedan maj 2001797 inlägg
#3

Supplied argument is not a valid MySQL result resource

Asså den ska hämta massa rader från "ord " men bara en rad från "bok", då måste man väl göra på nåt annat sätt?

Medlem sedan dec. 200012 464 inlägg
#4

Så vitt jag kan se så är syntaxen korrekt. Hur ser PHP-koden ut? Har du något anrop till Mysql_error?

Medlem sedan maj 2001797 inlägg
#5

Först

$data = mysql_db_query("dreamsql", "SELECT engelska, svenska, titel, forfattare FROM ord, bok WHERE bokID = " . $HTTP_GET_VARS[bok] . " AND bok.bokID = ord.bokID ORDER BY engelska;");

...sen...

<?
while ($getdata = mysql_fetch_array ($data))
{
	print "<tr style='border: 1px solid black'>";
	print "<td valign='top'><b>";
	print $getdata["engelska"];
	print "</b></td><td width='350'>";
	print $getdata["svenska"];
	print "</td></tr>";
}
?>

Det ska väl fungera?

Medlem sedan dec. 200012 464 inlägg
#6

Vad får du ut med lite testutskrifter?

$q = "SELECT engelska, svenska, titel, forfattare FROM ord, bok WHERE bokID = " . $HTTP_GET_VARS[bok] . " AND bok.bokID = ord.bokID ORDER BY engelska";
echo $q;

$data = mysql_db_query("dreamsql", $q) or die(mysql_error());

Du kan ju också testa frågan separat.

Medlem sedan maj 2001797 inlägg
#7

'bokID' in where clause is ambiguous

Så här har jag gjort.

bok.bokID(Primary Key):
Typ: int(255)
Attribut:(none)
Null: Nej
Standard: 0
Extra: auto_increment

ord.bokID:
Typ: int(11)
Attribut: (none)
Null: Nej
Standard: 1
Extra: (none)

Medlem sedan dec. 200012 464 inlägg
#8

Då förstår jag.

$q = "SELECT engelska, svenska, titel, forfattare FROM ord, bok WHERE [b]bok.[/b]bokID = " . $HTTP_GET_VARS[bok] . " AND bok.bokID = ord.bokID ORDER BY engelska";
Medlem sedan maj 2001797 inlägg
#9

Löst!
Då har jag en php-fråga om man får ställa den här. Om man gjort resultatet av sql-query:n till en array, $getdata = mysql_fetch_array ($data), hur kan man då vid ett senare tillfälle i koden loopa upp den?

while ($getdata = mysql_fetch_array ($data))
{
	print "<tr style='border: 1px solid black'>";
	print "<td valign='top'><b>";
	print $getdata["engelska"];
	print "</b></td><td width='350'>";
	print $getdata["svenska"];
	print "</td></tr>";
}

Detta funkar ju inte då längre.
Alternativet är att man bara hämtar fram de värden som ska fram innan while-loopen för sig, utan att skapa en array. Hur gör man det? (faan vilken ångest, jag har ju varit grym på det här!)

Medlem sedan dec. 200012 464 inlägg
#10

Är det denna funktion du tänker på?

http://www.php.net/manual/en/function.mysql-data-seek.php

Medlem sedan maj 2001797 inlägg
#11

Den kan nog hjälpa till med ett och annat! Tack så mycket! :)

138 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)