webForumDet fria alternativet

Hämta från olika tabeller?

Databaser & SQL

16 svar · 488 visningar · startad av streetrobban

Medlem sedan jan. 20011 140 inlägg
Frågan#1

Hej, jag har följande två tabeller:

Bilmärken
id, bilmärke

Bilmodeller
id, id_bilmärke, bilmodell

Nu vill jag hämta en lista på samtliga bilmodeller med tillhörande bilmärke från tabellen Bilmodeller. Så jag måste med hjälp av ID't från bilmodeller.id_bilmärke hämta namnet på bilmärket från bilmärken.bilmärke.

Hoppas jag inte förvirrar er för mycket :) Finns det något enkelt sett att lösa detta på?

Medlem sedan juni 200032 967 inlägg
#2
SELECT bilmärken.bilmärke, bilmodeller.bilmodell FROM bilmärken INNER JOIN bilmodeller ON bilmärken.id = bilmodeller.id_bilmärke ORDER BY bilmärken.bilmärke, bilmodeller.bilmodell

mvh

Medlem sedan jan. 20011 140 inlägg
#3

Tack för ditt svar @nders!

Medlem sedan jan. 20011 140 inlägg
#4

Jag måste bumpa den här tråden lite då jag har en till fråga.

Så här ser mina tabeller ut:

bilmärken
id, bilmärke

bilmodeller
id, bilmodell, id_bilmärke

kategorier_biltillbehör
id, kategorinamn

produkter_biltillbehör
id, produktnamn, id_bilmodell, id_bilmärke, bild, beskrivning, pris, id_kategori, tid, datum

Och nu vill jag hämta en produkt. Och varje produkt innehåller ju tre olika id nummer som måste hämtas från tre olika tabeller. Hur gör jag det? Jag måste alltstå hämta:

bilmärken.bilmärke m.h.a produkter_biltillbehör.id_bilmärke

bilmodeller.bilmodell m.h.a. produkter_biltillbehör.id_bilmodell

kategorier_biltillbehör.kategorinamn m.h.a. produkter_biltillbehör.id_kategori

Jag undrar även om det går att hämta från en annan tabell samtidigt som man loopar ut resultat. Har provat detta lite, men när man öppnar en ny tabell avbryts ju loopen.

Tack på förhand!

Medlem sedan nov. 2000857 inlägg
#5

Tråden flyttas från PHP..

Medlem sedan dec. 200012 464 inlägg
#6
select b.bilmärke ,
bm.bilmodell, 
kb.kategorinamn,
p.produktnamn
from produkter_biltillbehör  as pb
inner join kategorier_biltillbehör as kb on pb.id_kategori = kb.id
inner join bilmodeller as bm on pb.id_bilmodell = bm.id
inner join bilmärken as b on pb.id_bilmärke = b.id
Medlem sedan jan. 20011 140 inlägg
#7

LarsG: Har du förkortat tabellnamnen för enkelhetens skull eller ska det skrivas så där?

Medlem sedan dec. 200012 464 inlägg
#8

För enkelhets skull. Du kan använda det fullständiga namnet men om du har angett ett kortnamn så måste du använda det.

Medlem sedan jan. 20011 140 inlägg
#9

Ok. Men om tabellen heter sns_bilmodeller kan jag använda ett kortnamn då?

Medlem sedan dec. 200012 464 inlägg
#10

Jo visst, självklart eller så förstår jag inte vad som är problemet.

Medlem sedan jan. 20011 140 inlägg
#11

Jaha, nu såg jag att du "döpte" alla förtkortningar. :)

Medlem sedan jan. 20011 140 inlägg
#12

Jag får det inte att funka riktigt. Så här ser koden jag använder ut.

SELECT b.bilmärke,
bm.bilmodell, 
kb.kategorinamn,
p.produktnamn
FROM sns_produkter_biltillbehör AS pb
INNER JOIN sns_kategorier_biltillbehör AS kb ON pb.id_kategori = kb.id
INNER JOIN sns_bilmodeller AS bm ON pb.id_bilmodell = bm.id
INNER JOIN sns_bilmärken AS b ON pb.id_bilmärke = b.id

Tabellerna heter sns_ etc...

Medlem sedan juni 200032 967 inlägg
#13

på vilket sätt funkar det inte riktigt?
Felmeddelande?

Medlem sedan jan. 20011 140 inlägg
#14

Felmeddelandet är det enda som skrivs ut:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/kunder/sidan/admin/andra2.php on line 110
Medlem sedan juni 200032 967 inlägg
#15

du borde ju kunna få något MySQL-fel som talar om någonting om SQL-frågan? Skriver du ut mysql_error()?

Medlem sedan jan. 20011 140 inlägg
#16

Jag ändrade SQL Satsen till följande. Nu skriver den ut sns_produkter_biltillbehör.produktnamn men inget annat.

SELECT sns_bilmärken.bilmärke, sns_bilmodeller.bilmodell, sns_kategorier_biltillbehör.kategorinamn, sns_produkter_biltillbehör.produktnamn FROM sns_produkter_biltillbehör AS sns_produkter_biltillbehör
				INNER JOIN sns_kategorier_biltillbehör ON sns_produkter_biltillbehör.id_kategori = sns_kategorier_biltillbehör.id
				INNER JOIN sns_bilmodeller  ON sns_produkter_biltillbehör.id_bilmodell = sns_bilmodeller.id
				INNER JOIN sns_bilmärken ON sns_produkter_biltillbehör.id_bilmärke = sns_bilmärken.id WHERE sns_produkter_biltillbehör.id = '$id'
Medlem sedan jan. 20011 140 inlägg
#17

Nu fick jag det att funka...

SELECT sns_bilmärken.bilmärke, sns_bilmodeller.bilmodell, sns_kategorier_biltillbehör.kategorinamn, sns_produkter_biltillbehör.produktnamn, sns_produkter_biltillbehör.bild, sns_produkter_biltillbehör.beskrivning, sns_produkter_biltillbehör.pris, sns_produkter_biltillbehör.tid, sns_produkter_biltillbehör.datum FROM sns_bilmärken
INNER JOIN sns_produkter_biltillbehör ON sns_produkter_biltillbehör.id_bilmärke = sns_bilmärken.id
INNER JOIN sns_bilmodeller ON sns_produkter_biltillbehör.id_bilmodell = sns_bilmodeller.id
INNER JOIN sns_kategorier_biltillbehör ON sns_produkter_biltillbehör.id_kategori = sns_kategorier_biltillbehör.id WHERE sns_produkter_biltillbehör.id = '$id'

Tack för hjälpen!

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)