webForumDet fria alternativet

Count från annan tabell med dynamisk sqlsats

3 svar · 1 421 visningar · startad av Vide

VideMedlem sedan dec. 19998 577 inlägg
#1

Jag har en sqlsats där en kolumn innehåller en annan sqlsats. Jag vill nu få ut en count() på antalet som matchar denna sqlsats i en annan tabell.

Såhär ser det ut nu:

SELECT EntityID,EntityLabel, '3' as EntityTypeID, EntitySQL FROM p_Entities AS pE WHERE EntityTypeID=3 GROUP BY EntityID,EntityLabel,EntityTypeID,EntitySQL

I tabellen p_Data så vill jag med kolumnen EntitySQL ovan få ut antalet rader jag får träff på i p_Data och sedan få ut detta i sqlsatsen ovan.

Hur gör jag det om jag får fråga?

Mvh,
Vide

plekanecMedlem sedan dec. 201027 inlägg
#2

Om jag förstår dig rätt så är det nått i denna stilen du vill ha:

SELECT pE.EntityID,
pE.EntityLabel,
'3' as EntityTypeID,
pE.EntitySQL,
(
SELECT COUNT(p_Data.ID) FROM p_Data
WHERE p_Data.EntitySQL = pE.EntitySQL
) AS pDataCount
FROM p_Entities AS pE
WHERE EntityTypeID=3
GROUP BY EntityID,EntityLabel,EntityTypeID,EntitySQL

VideMedlem sedan dec. 19998 577 inlägg
#3

Hej plekanec. Jag skulle nog ha beskrivit det bättre. Det är så att sql-satsen som jag vill använda som filter (och därefter köra count på) ligger som ett värde i kolumnen EntitySQL.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4

Eventuellt kan PREPARE/EXECUTE lösa problemet. Se t ex: http://stackoverflow.com/questions/190776/how-to-have-dynamic-sql-in-mysql-stored-procedure
Men det där att du lagrar SQL-satser på det sättet du gör känns nästan fel. Vad är det egentliga problemet du försöker lösa?

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