webForumDet fria alternativet

Hämta de fält som finns och skita i resten ;-)

Databaser & SQL

3 svar · 414 visningar · startad av Duffer

Medlem sedan mars 2003429 inlägg
Frågan#1

Hej,
Kunde inte komma på någon bättre titel på mitt "lilla" problem.

Jag har 4 tabeller, 3 jag vill hämta data ur, men grejjen är den att tabellerna är inte beroende av varandra, alltså en tabell kan ha data utan att de andra har det.

De fyra tabellerna är:
tblUser
tblImages
tblComments
tblBlogg

Det enda dom har gemensamt är att det är en och samma user som kan äga data i en av varje tabell. Jag försöker konstruera en sats där jag hämtar den senaste bilden, kommentaren och blogginlägget tillhörande just en user (t.ex. userid = 1) men jag lyckas bara med detta när alla fälten har ett värde.

Det som lyckas hämta data ur alla tabeller ser ut som nedan.

SELECT i.fldFilename, c.fldText, b.fldTitle
FROM tblBlogg b, tblComments c, tblImages i
WHERE b.fldUserId = 1
AND i.fldUserId = b.fldUserId
AND c.fldUserId = i.fldUserId
ORDER BY fldBloggId DESC , fldCommentId DESC , fldCommentId DESC LIMIT 1

Någon som vill hjälpa?

MySQL 4.0

Gott nytt år!

mvh

Medlem sedan dec. 19995 874 inlägg
#2

Prova detta...

SELECT 
	u.fldUserId ,
	i.fldFilename, 
	c.fldText, 
	b.fldTitle
FROM 
	tblUsers u,
	left join tblBlogg b on u.fldUserId = b.fldUserId 
	left join tblComments c on u.fldUserId = c.fldUserId 
	left join tblImages i on u.fldUserId = i.fldUserId 
WHERE 
	u.fldUserId = 1
ORDER BY 
	fldBloggId DESC, 
	fldCommentId DESC LIMIT 1

i.fldFilename, c.fldText, b.fldTitle kommer att vara null om användaren inte har bild, kommentar eller blogg.

Medlem sedan mars 2003429 inlägg
#3

Tackar så mycket för hjälpen du ställde upp lite åt mig som hjälpte mig att lösa det i slutändan jag hade börjat lite på en left outer join som jag inte fick att fungera. Den koden du skickade fungerade inte heller utan jag modifierade den som du/ni kan se under citatet

Brimba skrev:

Prova detta...

SELECT 
	u.fldUserId ,
	i.fldFilename, 
	c.fldText, 
	b.fldTitle
FROM 
	tblUsers u,
	left join tblBlogg b on u.fldUserId = b.fldUserId 
	left join tblComments c on u.fldUserId = c.fldUserId 
	left join tblImages i on u.fldUserId = i.fldUserId 
WHERE 
	u.fldUserId = 1
ORDER BY 
	fldBloggId DESC, 
	fldCommentId DESC LIMIT 1

i.fldFilename, c.fldText, b.fldTitle kommer att vara null om användaren inte har bild, kommentar eller blogg.

SELECT 
	u.fldUserId ,
	i.fldFilename, 
	c.fldText, 
	b.fldTitle
FROM 
	tblUsers u
	left outer join tblBlogg b on u.fldUserId = b.fldUserId 
	left outer join tblComments c on u.fldUserId = c.fldUserId 
	left outer join tblImages i on u.fldUserId = i.fldUserId 
WHERE 
	u.fldUserId = 1
ORDER BY 
	fldBloggId DESC, 
	fldCommentId DESC LIMIT 1

Den fungerar kanoners nu!

Gott Nytt år än en gång! :bire

EDIT: Förresten vilket inlägg ska jag lägga som slutgiltigt? Trots allt inte jag som gjorde grovjobbet!

Medlem sedan jan. 20061 807 inlägg
#4

Det torde väl bli Brimbas ;)
Gott Nytt År!

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)