webForumDet fria alternativet
Logga in / Bli medlem

innerjoin?

Databaser & SQL

2 svar · 223 visningar · startad av st0ffe

Medlem sedan mars 200218 inlägg
Trådstart#1

hej. jag har inte fattat det här med innerjoin riktigt. jag har dessa tabeller:

produkt
id
artistid
skivbid
typid
formatid
prisid
titel
beskrivning
katnr
ny

artist
id
artist

formatet
id
format

pris
id
pris

skivb
id
skivb

typ
id
typ

Jag vill hämta data beroende på två variabler, $searchOption och $searchCondition.

Om dessa är t.ex. $searchOption = skivbolag, $searchCondition = "Adrian Recordings" så skall jag hämta all information om alla produkter som har "Adrian Recordings" som skivbolag. Dessa ska sedan sorteras efter artistens namn och titel på produkten.

Då måste jag juh först kolla i skivb och hämta det id:t, jämföra detta med skivbid i produkt. Sedan hämta all data i de andra tabellerna beroende på id i produkt (t.ex. pris och artist). Efter detta ska jag sortera på artist.artist, produkt.titel.

Hur skall denna sql-frågan se ut?

Medlem sedan mars 200218 inlägg
#2

ok.. jag har:

$result = mysql_query("SELECT produkt.*, artist.artist FROM produkt
INNER JOIN artist ON produkt.artistid = artist.id 
WHERE produkt.ny = 1 ORDER BY artist");

	while($data = mysql_fetch_array($result))
	{
		echo $data[artist]."<br>";
	
}

Men hur får jag ut övriga värden ur de andra tabellerna?
Är det flera innerjoins som gäller eller?

Medlem sedan dec. 200012 464 inlägg
#3

Jo, det är det. Du kan ha så många som behövs

SELECT produkt.*, artist.artist 
  FROM produkt INNER JOIN artist 
      ON produkt.artistid = artist.id 
  INNER JOIN skivb 
      ON produkt.skivbid = skivb.id
WHERE produkt.ny = 1 
     AND SKIVB = 'Adrian Recordings'
ORDER BY artist, produkt.titel
268 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)