2017-06-22 2 views
1

J'ai besoin d'une solution pour mon projet ... En fait, j'ai été piégé dans un problème .. Laissez-moi vous montrer l'image de mon problème. Si vous pouvez voir, il y a des colonnes de 12 mois. Donc j'ai besoin d'exécuter une requête MySQL ou un programme qui peut me montrer les colonnes sélectionnées qui contiennent le texte "Not Paid".Solution pour une requête MySQL

Par exemple.

Si je veux vérifier les membres entre Janvier à Mars ou Juin à Novembre etc qui sont "Non Payé" .. Alors, quelle est la solution pour cela ... ?? Je sais que nous pouvons utiliser la clause "between", mais je ne comprends pas l'idée .. Parce que je veux utiliser deux gouttes dans le menu où l'utilisateur peut choisir de quel mois à quel mois ils veulent voir.

S'il vous plaît aidez-moi à se débarrasser de ce problème .. Je suis un nouveau débutant en PHP.

+1

Partagez votre schéma –

Répondre

1

Si j'étais vous, je représenterais les mois comme des dates, même si les chaînes (par exemple, '2017-06'), puis mappez le mois à la chaîne de représentation sémantique (par exemple, 'June'). Donc, une façon est de stocker la date dans votre base de données MySQL en tant que varchar.

En termes de modélisation des données dans votre base de données, je voudrais créer une table avec trois colonnes 1) le user_id; 2) due_date; 3) payment_status.

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

Vous pouvez maintenant écrire une requête pour récupérer les membres entre Janvier à Mars qui a « pas payé ». (note: ceci est juste une façon, il y a plusieurs façons d'interroger ceci)

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