2012-04-10 2 views
0

Ich bin ein Anfänger, wenn es um Datenbanken geht und diese Frage lässt mein Gehirn schmelzen. Ich habe eine Datenbank mit den Standardspalten, die Sie sich vorstellen würden: Id, Preis, Beschreibung usw. Wie soll ich die Datenbank organisieren, so dass es möglich ist, die Datenbank abzufragen, wie oft ein Artikel zwischen 2012-01-08 und 2012- gekauft wurde 03-23?Wie SQL-Datenbank abfragen, wie oft ein Artikel zwischen zwei Daten gekauft wurde?

Antwort

2

Mit den anderen Antworten übereinstimmen.

SELECT itemcode, count(itemcode) 'times purchased', sum(quantity) 'amount purchased' 
FROM `temp_trans` 
WHERE `trans_date` >= '2012-01-08' AND `trans_date` <= '2012-03-23' 
GROUP BY itemcode 

Hier ist ein anschauliches Beispiel: http://sqlfiddle.com/#!2/13def/1

+0

Wenn ich eine Einkaufstabelle entwerfe, gehe ich definitiv für eine Quantitätsspalte. Das muss also die nächste und allgemeinere Lösung sein, IMO. –

1

Wenn Sie eine Datumsspalte genannt haben dt können Sie

SELECT COUNT(Id) FROM your_table 
WHERE dt BETWEEN 2012-01-08 AND 2012-03-23 
    AND Id = your_item_id 
1
select id, count(*) 
from mytable 
where date between '2012-01-01' and '2012-02-02' 
group by id 

Dies gibt Ihnen die Anzahl der Nutzungen jeder Artikel gekauft wurde. Das Feld, nach dem Sie gruppieren, hängt davon ab, wie das Ergebnis aufgeteilt werden soll. Die Verwendung einer ID oder eines eindeutigen Namens würde abhängig davon, was Sie mit dem Ergebnis machen möchten, funktionieren.

Die zwischen Klausel ist inklusive btw

Edit: guter Punkt auf den Kommentar! Wahrscheinlich hätte er sagen sollen: "Verwenden Sie ein geeignetes Feld zum Gruppieren, wie den Namen oder die ID des Elements." In einigen unserer Systeme werden Beschreibung und Name synonym verwendet :)

+0

Ihre Abfrage funktioniert (es ist syntaktisch korrekt), aber ich würde zu einer Gruppe von Beschreibung Angst: verschiedene Elemente gleiche Beschreibung haben könnten! Wie auch immer, OP hat uns nichts gesagt, also einen guten Job. +1 für Sie – Marco

+2

Ich denke, Sie sollten besser Standard-Syntax für Daten verwenden: 'YYYY-MM-DD'. – Marco

Verwandte Themen