2016-08-01 11 views
0

Ich habe eine einfache Tabelle 'Drogen' mit 4 Spalten: 'EAN', 'ATC', 'Menge', 'Preis'. EANs und ATCs sind eine Art von Medikamentencodes, während die Menge im Grunde die Anzahl der Arzneimittelpakete ist, die für den gegebenen Preis gekauft wurden. Nicht von ihnen ist einzigartig, Zeilen können (und wahrscheinlich tun) duplizieren. Ich brauche Kosten für ein einzelnes Paket, also habe ich verwendet:MySQL - SELECT mit Division von zwei Werten gibt unterschiedliche Anzahl von Zeilen zurück

SELECT EAN, ATC, ROUND((price/amount),2) FROM drugs 

aber das Ergebnis hat weniger Zeilen. Um genau zu sein, Drogen hat 23.658.687 Gesamtzeilen, während Abfrageergebnis nur 23.657.443 hat. Was ist mit diesen 1.244 Aufzeichnungen passiert? Ich dachte, dass das Ergebnis genau die gleichen Zeilen haben wird, aber mit neuen berechneten Werten in jeder Zeile anstelle von zwei alten. In

+2

Alle Datensätze in 'Drogen' sollten erscheinen. Gibt es eine Chance, dass der Tisch geändert wurde, seit du die Summe von 23.658.687 erhalten hast? –

+0

Wenn Sie keine 'where' Kriterien haben, würde diese Abfrage die gleiche Anzahl von Zeilen wie' select * from drugs' zurückgeben ... Können Sie eine sql Geige mit Ihrem Problem posten? – sgeddes

+0

Kann sein, einige Zeilen haben 'Betrag = 0'. –

Antwort

1

SELECT EAN, ATC, ROUND((price/amount),2) FROM drugs where 1=1 

und wählt alle Datensätze. Ich habe keine Ahnung, warum es funktioniert, aber es tut. Ich vermute, dass es einige exakte doppelte Datensätze gab, die nicht zurückgegeben wurden, und die neue WHERE-Anweisung zwingt sie zu erscheinen.

Verwandte Themen