webForumDet fria alternativet
Logga in / Bli medlem

Select blir fel

Databaser & SQL

2 svar · 258 visningar · startad av dahlgren

Medlem sedan aug. 20011 946 inlägg
Trådstart#1

Frågan nedan ger ju inget fel i sig men inte riktigt det jag vill ha.

SELECT h.username, h.time, h.content_id, u.fullname FROM History h, User u WHERE h.content_id = '70'

I tabellen history finns just nu bara en rad och det är ju den jag borde få upp men istället får jag följande

username time content_id fullname
dahlgren 2006-04-05 15:06:07 70 Jonas Dahlgren

listan forstätter sen med alla användare i tabellen user utaom fast med samma värden förutom fullname. Vad har jag gjort för fel? Visst kans jag lösa det med limit 1 men det blir ju inte riktigt rätt.

edit: På sikt kommer det naturligtvis finnas flera rader i history och då ska den med senast datum väljas.

Medlem sedan dec. 200012 464 inlägg
#2

Du behöver ange ett joinvillkor mellan tabellerna.
Om content_id är en numerisk kolumn så skall du inte jämföra den med en sträng.

Medlem sedan aug. 20011 946 inlägg
#3
SELECT h.Username, h.time, h.content_id, u.fullname FROM History h, User u WHERE h.content_id = 70 ORDER BY time

Hur ska jag ändra för att ange ett joinvilkor? Har tagit bort fnuttarna kring content_id för att det ska bli ett numreriskt värde.

Edit:
Lösningen:

SELECT h.Username, h.time, h.content_id, u.fullname FROM History h left join User u on h.Username=u.Username WHERE h.content_id = 70 ORDER BY time

Tack för hjälpen!

242 ms totalt · 4 externa anrop · v20260731065814-full.7fb52858
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)