0
votes

Query SQL Pour sélectionner des enregistrements qui vérifient au moins un enregistrement valide avec des critères donnés

Je travaillais sur la formulation d'une requête pour une table d'éligibilité avec un utilisateur peut avoir des éligibilitées différentes.

Tableau aura le format donné ci-dessous. P>

id | start_date | end_date    | status | user_id
-------------------------------------------------
 1    2018-06-23  2018-12-31  | active |   1
 2    2018-06-23  2019-01-30  | active |   1
 3    2018-06-23  2018-12-31  | active |   3
 4    2018-06-23  2019-12-22  | active |   3
 5    2018-06-23  2018-12-31  |inactive|   4
 6    2018-06-23  2019-03-10  | active |   4
 7    2018-06-23  2018-12-31  | active |   5
 8    2018-06-23  2019-12-31  | active |   5
 9    2018-06-23  2018-01-31  | active |   6
 10   2018-06-23  2019-12-24  | active |   6
 11   2018-06-23  2018-12-31  |inactive|   7
 12   2018-06-23  2019-02-22  | active |   7
 13   2018-06-23  2019-12-31  | active |   1
 14   2018-06-23  2019-12-31  | active |   3


7 commentaires

Utilisez-vous MySQL ou MS SQL Server?


J'utilise MS SQL Server


Ensuite, vous pouvez supprimer la balise .


Je l'ai fait. Maintenant, pouvez-vous m'aider avec la solution?


"J'ai essayé certaines options mais rien n'a travaillé pour obtenir tous les utilisateurs non éligibles." Pourriez-vous poster ces tentatives? Pourquoi n'a-t-il pas fonctionné comme prévu ou retournez les résultats que vous vouliez? Pourriez-vous partager des données d'échantillons et les résultats attendus que vous avez après pour cet échantillon?


@Larnu est totalement d'accord, des échantillons de données et des résultats attendus toujours le meilleur.


J'ai mis à jour la question avec les données et les résultats attendus. Jetez un coup d'oeil s'il vous plait


3 Réponses :


0
votes

Avez-vous essayé entre avant? XXX


1 commentaires

J'ai mis à jour la question avec les données et les résultats attendus. Jetez un coup d'oeil s'il vous plait



0
votes

Qu'est-ce que cela vous donne:

select * from users u
LEFT join eligibility e on users.id=eligibility.user_id
where e.user_id is NULL


4 commentaires

Cela ne fonctionnera pas comme ID utilisateur pour chaque dossier d'éligibilité.


J'ai mis à jour la question avec les données et les résultats attendus. Jetez un coup d'oeil s'il vous plait


@Sachin, ça marchera. Je peux voir tout de suite de vos données d'échantillonnage, l'ID de Sam Ronald est absent de la table d'éligibilité. Les critères de la plage de dates peuvent être ajoutés pour réduire le jeu de données.


C'est l'un des cas où l'utilisateur n'a pas d'enregistrement d'éligibilité. Mais si vous regardez l'utilisateur: Dean Marcus, il dispose de deux enregistrements dans la table d'éligibilité qui ne sont pas valides selon la date actuelle. IE: Éligieux expirés



1
votes

Ce sont les conditions d'un utilisateur éligiibile: xxx

donc s'il n'y a pas une ligne d'utilisateur dans le tableau ELIGITÉ qui satisfait ces conditions alors que l'utilisateur n'est pas éligible.
Vous pouvez utiliser n'existe pas : xxx


1 commentaires

Merci pour la solution!