webForumDet fria alternativet

Select blir fel

2 svar · 258 visningar · startad av dahlgren

dahlgrenMedlem sedan aug. 20011 946 inlägg
#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.

LarsGMedlem 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.

dahlgrenMedlem 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!

127 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)