webForumDet fria alternativet
Logga in / Bli medlem

Funkar men ser fult ut

Databaser & SQL

4 svar · 163 visningar · startad av Erik Juhlin

Medlem sedan maj 200010 687 inlägg
Frågan#1

Den här SQLen gör precis det jag vill (eller är i alla fall grunden till det jag vill göra). Men det verkar helt sjukt att skriva 1 = 1. Går det inte att skriva på något annat sätt?

SELECT * FROM tblArticle a
LEFT OUTER JOIN tblArticlePrice p ON a.ArticleId = p.ArticlePriceArticleId
RIGHT OUTER JOIN tblPriceList ON 1 = 1
WHERE a.ArticleId = 10143
Medlem sedan dec. 200012 464 inlägg
#2
SELECT * FROM tblArticle a
LEFT OUTER JOIN tblArticlePrice p ON a.ArticleId = p.ArticlePriceArticleId
cross JOIN tblPriceList 
WHERE a.ArticleId = 10143
Medlem sedan maj 200010 687 inlägg
#3

Funkade visst inte alls som jag ville... :r

Jag vill att eftersom att tblPriceList innehåller två rader få ut två resultat.
Det är inte alltid säkert att det finns fält i tblArticlePrice kopplade till en viss artikel. Men jag vill alltid få ut två fält eftersom att det är en view och man sen ska kunna ställa frågor mot viewen.

Medlem sedan maj 200010 687 inlägg
#4

Tack LarsG, såg mycket snyggare ut, men fungerar precis likadant. :l

Jag kanske förklarar konstigt så jag tror jag försöker förklara igen.
När jag joinar så vill jag ha ut två resultat av alla artiklar oberoende om de är kopplade till en prislista eller inte.
Som det är nu så verkar det som att allt bara gångas med två. :l

Medlem sedan maj 200010 687 inlägg
#5

Funkar! :D

SELECT * FROM tblArticle a
CROSS JOIN tblPriceList l
LEFT OUTER JOIN tblArticlePrice p ON l.PriceListId = p.ArticlePricePriceListId AND a.ArticleId = p.ArticlePriceArticleId
WHERE a.ArticleId = 10148
ORDER BY ArticleId
262 ms totalt · 4 externa anrop · v20260731065814-full.05830320
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)