Avatar billede AnyFellow Mester
31. december 2012 - 12:58 Der er 5 kommentarer og
1 løsning

Forespørgsel virker ikke som forventet

Jeg har denne forespørgsel:

SELECT o.`zip`, z.`city`, o.`app_status`
FROM `orders` o
INNER JOIN `zip_codes` z
ON o.`zip`              = z.`zip_code`
WHERE o.`restaurant_id` = '5'
AND o.`order_id`        = '179'
AND (o.`app_status`    = 'wait_restaurant'
OR o.`app_status`      = 'wait_customer'
OR o.`app_status`      = 'accepted')
GROUP BY o.`order_id`
LIMIT 0,1


Mit problem, er at forespørgslen finder en anden ordre, end den ordre der har id 179.

Hvad gør jeg forkert?
Avatar billede erikjacobsen Ekspert
31. december 2012 - 13:23 #1
Du skal nok ikke have din group by på - hvad gavn skulle den gøre dig?
Avatar billede AnyFellow Mester
31. december 2012 - 16:14 #2
Årsagen er at zip-tabellen indeholder flere poster med samme postnr., dog er bynavnet altid det samme uanset antallet af poster.

Jeg har leget lidt mere med min sal. Fjernes de 3 linjer hvor der checkes for app-status virker det som ventet.
Avatar billede erikjacobsen Ekspert
31. december 2012 - 17:24 #3
Det er da helt "live fra Bremen" at have sådan en zip-tabel ;)

Men i givet fald kunne du måske lave en group by på o.zip eller z.zip_code - det giver slet ingen mening at lave den på o.order_id, og derefter SELECTe noget, der ikke er o.order_id eller aggregatfunktoner på de øvrige felter. Det er formelt forkert SQL, men MySQL i standard opsætning tillader det.
Avatar billede AnyFellow Mester
01. januar 2013 - 11:35 #4
Tjah, det kan du snakke med Post Danmark om.

Der er nogle postnummer i landet der ligger i 2 kommuner.

Jeg har valgt at bibeholde oplysningerne om kommunerne, idet det giver mig bedre statistiske muligheder, men ulempen er at et postnummer kan have 2 poster i tabellen.
Avatar billede erikjacobsen Ekspert
01. januar 2013 - 11:42 #5
Ja, den kender vi. Men der er vel ikke noget i vejen for at lave en ren zip/by-tabel. Du kender alligevel ikke, generelt, kommunen ud fra postnummer.

Men i hvert fald er det group by zip, der kan klare den lille sag.
Avatar billede AnyFellow Mester
01. januar 2013 - 17:56 #6
Tak for hjælpen. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester