webForumDet fria alternativet

Finn ett fel

Databaser & SQL

10 svar · 214 visningar · startad av Pikkenix

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

Hittar inte felet i min SQL-fråga. Får inga felmeddelanden men det returneras helelr inga records...

sql = "SELECT orders.orderid, orders.datum, orders.betalning, kunder.fnamn, kunder.enamn, kunder.epost, kunder.kundID, SUM(artiklar.pris) as priset FROM orders, kunder, artiklar WHERE orders.status = 0 AND orders.kundid = kunder.kundID AND artiklar.artikelid = '(SELECT orderartikel.artikelid FROM orderartikel WHERE orderartikel.artikelid = orders.artikelid)' GROUP BY orders.orderid, orders.datum, orders.betalning, kunder.fnamn, kunder.enamn, kunder.epost, kunder.kundID"

Medlem sedan sep. 20026 425 inlägg
#2

Andvänd kod-taggen i stället så att man får bättre överblick!

sql = "SELECT orders.orderid, orders.datum, orders.betalning, kunder.fnamn, kunder.enamn, kunder.epost, kunder.kundID, SUM(artiklar.pris)
as priset FROM orders, kunder, artiklar WHERE orders.status = 0 AND orders.kundid = kunder.kundID AND artiklar.artikelid =
'(SELECT orderartikel.artikelid FROM orderartikel WHERE orderartikel.artikelid = orders.artikelid)'
GROUP BY orders.orderid, orders.datum, orders.betalning, kunder.fnamn, kunder.enamn, kunder.epost, kunder.kundID"

/r Och förresten - jag kan inte. :(

Medlem sedan mars 2003116 inlägg
#3

Hittade du felet nu då?

Medlem sedan sep. 20026 425 inlägg
#4

Jag har kollat igenom SQL-satsen flera gånger nu och hittar fortfarande inget fel. Får du något felmeddelande?

Medlem sedan dec. 200012 464 inlägg
#5

Varför har du ett kommentarstecken här?

'(SELECT orderartikel.artikelid

Utan att ha tillgång till hela databasen går det inte att säga varför du inte får något svar.

Om du inte får något resultat så får du bryta ner frågan i mindre delar och testa ut dem var för sig.

Medlem sedan dec. 20003 887 inlägg
#6

Det finns ingen order som har status = 0?

SELECT o.orderid, o.datum, o.betalning, k.fnamn, k.enamn, k.epost, k.kundID, Sum(artiklar.pris) AS priset
FROM (orders o
INNER JOIN kunder k ON k.kundID = o.kundid)
WHERE o.artikelid IN
(SELECT oa.artikelid FROM orderartikel oa INNER JOIN orders o ON o.artikelid = oa.artikelid)
AND status = 0
GROUP BY o.orderid, o.datum, o.betalning, k.fnamn, k.enamn, k.epost, k.kundID

Det här kan iofs bli helt galet då jag inte vet hur din databas är uppbyggd.

red. Såg just att jag missat hela tabellen artiklar, så det där blir det nog inte som du vill :)

Medlem sedan mars 2003116 inlägg
#7

får ju inget felmeddelande det är därför jag har så sjukligt svårt att hitta flet, den får inte med några poster bara...

anledningen till ' är att det är en sträng inte ett tal...

Medlem sedan mars 2003116 inlägg
#8

tror att det är fel på den nestade sökningen men vet inte var...

Medlem sedan mars 2003116 inlägg
#9

Vad jag funderade på är orders.artikelid i

'(SELECT orderartikel.artikelid FROM orderartikel WHERE orderartikel.artikelid = orders.artikelid)'

refererar till, vilken orders.artikelid väljer den?

Medlem sedan mars 2003116 inlägg
#10

Fixade det på annat håll.

Om någon löser det så kan ni ju säga till iafall...

Medlem sedan mars 20034 471 inlägg
#11

Re: Finn ett fel

Pikkenix skrev:

Hittar inte felet i min SQL-fråga. Får inga felmeddelanden men det returneras helelr inga records...

sql = "SELECT orders.orderid, orders.datum, orders.betalning, kunder.fnamn, kunder.enamn, kunder.epost, kunder.kundID, SUM(artiklar.pris) as priset FROM orders, kunder, artiklar WHERE orders.status = 0 AND orders.kundid = kunder.kundID AND artiklar.artikelid = '(SELECT orderartikel.artikelid FROM orderartikel WHERE orderartikel.artikelid = orders.artikelid)' GROUP BY orders.orderid, orders.datum, orders.betalning, kunder.fnamn, kunder.enamn, kunder.epost, kunder.kundID"

Jag TROR att felet kan bero på den här biten:
artiklar.artikelid = '(SELECT orderartikel.artikelid FROM orderartikel WHERE orderartikel.artikelid = orders.artikelid) '

Du skriver ju att artiklar.artikelid ska vara lika med strängen (SELECT orderartikel.artikelid FROM orderartikel WHERE orderartikel.artikelid = orders.artikelid) - jag antar att det inte är avsikten? Har du några sådana skumma artikelid? Är det inte därför du inte får någon träff?

Även om du tar bort strängmarkeringen förstår jag inte vad du ska med din subselect till? Eftersom orderartikel.artikelid = orders.artikelid kan du ju lika bra skriva:
... AND artiklar.artikelid = orders.artikelid

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