webForumDet fria alternativet

Händelsebaserade villkor i MySQL

4 svar · 284 visningar · startad av Bluey

BlueyMedlem sedan dec. 200220 inlägg
#1

Går det att ställa händelsebaserade villkor i en SQL-fråga mot MySQL 4.0.14?

I exemplet nedan vill jag joina olika tabeller beroende på vad ett värde i grundtabellen innehåller:

select a.id, a.customer_name, b.title, c.name
from errors a

case a.form_id when 1 then
	inner join errors_studio b on a.category_id=b.id
	inner join errors_custtype c on a.papers_id=c.id
end

case a.form_id when 2 then
	inner join errors_pren b on a.category_id=b.id
	inner join errors_papers c on a.papers_id=c.id
end

Jag misstänker att "case" inte är rätt kommando, men får fungera som förklaring till det jag vill göra...

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Använd union.

BlueyMedlem sedan dec. 200220 inlägg
#3

Hur skulle denna fråga se ut med union?
Är union prestandamässigt bättre än att joina alla intressanta tabeller och låta PHP-scriptet filtera?

LarsGMedlem sedan dec. 200012 464 inlägg
#4
select a.id, a.customer_name, b.title, c.name
from errors a
inner join errors_studio b on a.category_id=b.id
inner join errors_custtype c on a.papers_id=c.id
where a.form_id = 1
union all
select a.id, a.customer_name, b.title, c.name
from errors a
inner join errors_pren b on a.category_id=b.id
inner join errors_papers c on a.papers_id=c.id
where a.form_id = 2

Att hantera utsökningen i PHP är aldrig bra.

Din datamodell är suspekt.

BlueyMedlem sedan dec. 200220 inlägg
#5

Tack för hjälpen!

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