webForumDet fria alternativet

Sub selects?

Databaser & SQL

10 svar · 341 visningar · startad av PatrikB

Medlem sedan mars 20002 836 inlägg
Frågan#1

Denna subselect funkar inte speciellt bra, eller är det så att det fortfarande är buggigt i v. 4.1:

SELECT m.FieldID, (SELECT Count(SomeFieldID) FROM OtherTable WHERE SubFieldID = m.FieldID) As SomeFieldCount FROM MainTable m

Den går igenom UTAN fel men returnerar null ...

Är det jag som fått fnatt och skriver fel så här i slutet av arbetsdagen???

cya & thx
PatrikB

Medlem sedan dec. 200012 464 inlägg
#2

Din fråga är korrekt. Resultatet av att använda en count i en skalär subselect kan aldrig bli null så det är helt klart ett fel i Mysql.

Medlem sedan mars 20002 836 inlägg
#3

Tackar LarsG,
det var som jag trodde ;)

Det "roliga" i kråksången är att den returnerar 0 när counten är 0 och null om counten skulle ge ett resultat mer än 0

ja, ja, blir till att vänta med att uppgradera till 4.1 tills de har fixat den "featuren" :e

cya,
PatrikB

Medlem sedan mars 20002 836 inlägg
#4

Döm om min förvåning (man ger sig ju inte så lätt utan labbar vidare) när jag körde denna fråga:

queryToRun = "SELECT m.FieldID, " & _
	"(SELECT Count(SomeFieldID) FROM OtherTable WHERE SubFieldID = m.FieldID [b]GROUP BY SomeFieldID[/b]) As SomeFieldCount " & _
	"FROM MainTable m"

WHOOOPS!!! ut kommer rätt resultat!

cya,
PatrikB

Medlem sedan dec. 200012 464 inlägg
#5

Mysql upphör aldrig att förvåna. Finns det olika värden för somefield?

Medlem sedan mars 20002 836 inlägg
#6

he, he ... nu ser jag att min "pseudo kod" inter ser korrekt ut.

Detta är mer korrekt:

SELECT my.SomeField, (SELECT COUNT(SomeUniqueID) FROM AnotherTable WHERE SubUniqueID = my.UniqueID GROUP BY SubUniqueID) As FieldCnt " & _
	"FROM MyTable my"

SomeUniqueID kan det finnas n-antal olika förekomster av i relationstabellen AnotherTable med relationen:


MyTable.UniqueID | 0 --> n | AnotherTable.SubUniqueID

Tyvärr ingen höjdare prestanda mässigt då det vart segare än att slå en join och köra en Count() och gruppera :(

cya,
PatrikB

Medlem sedan juni 20014 290 inlägg
#7

Tänk på att 4.1.0 är i tidigt alpha stadie!

Medlem sedan mars 20002 836 inlägg
#8

Jo, jag vet .... och man hoppas att det kommer förändringar till det bättre :e

cya,
/PatrikB

Medlem sedan jan. 200398 inlägg
#9

PatrikB skrev:

Jo, jag vet .... och man hoppas att det kommer förändringar till det bättre :e

cya,
/PatrikB

Med risk för att klassas som ett troll, men jag vet att det finns många som väljer MySQL till nya projekt utan att reflektera över alternativen. Därför kan det vara intressant att se vad som erbjuds på andra sidan staketet Det finns en annan fri databas som erbjuder subselects, views, triggers, stored procedures med mera. Inte i alphaversion, inte i betaversion, utan stabilt, på riktigt. Dess namn är PostgreSQL. Se listan i slutet på den länkade sidan nedan:

http://advocacy.postgresql.org/advantages/

Medlem sedan mars 20002 836 inlägg
#10

Jo, jag vet om alternativen som finns och då bl a PostgreeSQL, Firebird m.m.

Dock aldrig stött på något av dem ute hos kund, men det har jag med MySQL ;) ... ett flertal gånger.

cya,
PatrikB

Medlem sedan juli 2002732 inlägg
#11

Men PostgreSQL fungerar inte i Windows! Eller har jag fel?

-Edit-
Jag såg länken i LMD:s inlägg att PostgreSQL 7.4 kommer att
stöda Windows! Den senaste versionen är 7.3.3, så snart kan
man använda också med Windows!

263 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)