2017-06-22 2 views
1

Ich brauche eine Lösung für mein Projekt .. Wirklich, ich habe in einem Problem gefangen..Lassen Sie mir zeigen, das Bild von meinem Problem. Lösung für eine MySQL-Abfrage

Wenn Sie sehen können, gibt es einige Spalten von 12 Monaten.So muss ich eine MySQL-Abfrage oder ein Programm ausführen, die mir die ausgewählten Spalten anzeigen können, die den Text "Nicht bezahlt" enthalten.

Zum Beispiel.

Wenn ich die Mitglieder zwischen Januar bis März oder Juni bis November usw. überprüfen will, die "nicht bezahlt" .. so was ist die Lösung dafür ... ??

Ich weiß, dass wir die "zwischen" -Klausel verwenden können, aber ich bekomme nicht die Idee .. Weil ich zwei Dropdown-Menü verwenden möchte, wo der Benutzer auswählen kann aus welchem ​​Monat in welchen Monat sie sehen möchten.

Bitte helfen Sie mir, dieses Problem loszuwerden .. Ich bin ein neuer Anfänger in PHP.

+1

Teilen Sie Ihr Schema –

Antwort

1

Wenn ich Sie wäre, würde ich die Monate als Daten darstellen, auch wenn Strings (z. B. '2017-06') und dann den Monat der semantischen Darstellung Zeichenfolge (z. B. 'June') zuordnen. Eine Möglichkeit besteht darin, das Datum in Ihrer MySQL-Datenbank als varchar zu speichern.

In Bezug auf die Modellierung der Daten in Ihrer Datenbank, würde ich eine Tabelle mit drei Spalten erstellen 1) die user_id; 2) die due_date; 3) die payment_status.

.----------------------------. 
| 0 | 2017-06 | paid  | 
| 1 | 2017-07 | not paid | 
| 2 | 2017-08 | paid  | 
| 3 | 2017-09 | paid  | 
'----------------------------' 

Jetzt können Sie eine Abfrage schreiben, um die Mitglieder zwischen Januar bis März, die "nicht bezahlt" hat abrufen. (Hinweis: Dies ist nur eine Möglichkeit, gibt es viele Möglichkeiten, dies abzufragen)

SELECT 
DISTINCT(user_id) 
FROM payments_table 
WHERE due_date >= '2017-03' 
AND due_date < '2017-06' 
AND payment_status = 'not paid';