webForumDet fria alternativet

Hämta endast första posten från en JOIN

Databaser & SQL

3 svar · 466 visningar · startad av Melea

Medlem sedan juli 20033 147 inlägg
Frågan#1

Hej,

har fått idétorka. Jag har två tabeller, tbl_PRODUCT och tbl_PRODUCT_INFO. När jag skriver ut innehållet från tbl_PRODUCT vill jag hämta endast en post (prod_name) från tbl_PRODUCT_INFO, men vet inte riktigt hur jag ska göra.

tbl_PRODUCT
id - int
page - varchar
subpage - varchar

tbl_PRODUCT_INFO
id - int
prod_id - int
prod_name - varchar

Har denna koden nu

select 
	p.id, 
	p.page, 
	p.subpage,
	pi.prod_name
from 
	" . tbl_PRODUCT . " p
left join
	" . tbl_PRODUCT_INFO . " pi on p.id = pi.prod_id
where 
	p.page = '" . $this->product . "'

Som ger resultat:
# PRODUKT 1
# PRODUKT 1
# PRODUKT 1
# PRODUKT 1
# PRODUKT 1
# PRODUKT 2
# PRODUKT 2
# PRODUKT 2
# PRODUKT 2
# PRODUKT 2
# PRODUKT 2
# PRODUKT 2
# PRODUKT 3
# PRODUKT 3
# PRODUKT 3
# PRODUKT 3

När jag vill få:

# PRODUKT 1
# PRODUKT 2
# PRODUKT 3

# PRODUKT är prod_name i tbl_PRODUCT_INFO
Hur göra? Tusen tack för alla möjliga svar. :)

Medlem sedan mars 20007 896 inlägg
#2
...
GROUP BY pi.prod_name

Om jag förstod dig rätt?

Medlem sedan dec. 200012 464 inlägg
#3

Det verkar mer som om det finns flera rader per produkt i tbl_produkt. Om det är så vad vill du ha för resultat för page och subpage? Exemplifiera med innehåll i de båda tabellerna och beskriv därifrån vilket resultat du förväntar dig.

Medlem sedan juli 20033 147 inlägg
#4

Det finns fler rader per produkt i tbl_PRODUCT_INFO, det är endast länkarna som finns i tbl_PRODUCT.
Hur som, GROUP BY gjorde susen! :)

Go jul!

287 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
156 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)