0
votes

Exclure les lignes d'une table si correspondez sur une autre table - MySQL

J'ai deux tables:

Le premier appelé Catégories strong> avec 3 colonnes "Administrateurs, ID, Nom". P>

administrators | id  | name
1              | 23  | David
NULL           | 28  | GLOBAL3


9 commentaires

@Eric i essayez Sélectionnez c. * À partir de catégories C Où C.Administrateurs = 1 ou (C.Administrateurs est NULL et n'existe pas (SELECT 1 de DisableDcateGories D où d.Id = C.ID)); Mais ne travaille pas


@Davidboe Ce n'est pas ce que vous avez essayé. C'est le code de ma réponse, non?


@ forpas oui bien sûr, vous êtes sur le point de le résoudre bro :)


@Davidboe Vous avez changé 3 fois vos échantillons de données et vos résultats attendus et vous n'avez toujours pas expliqué la logique qui conduit à ces résultats. Pourquoi voulez-vous cette ligne: null | 28 | Global3 dans les résultats?


Les commentaires ne sont pas l'endroit à expliquer. Modifiez votre question et mettez-y tout si nécessaire pour clarifier.


@ forpas édité, s'il vous plaît résoudre mon probleme


Votre exigence n'est toujours pas claire après autant de modifications. Si vous ne pouvez pas expliquer ce que vous voulez réellement comment vous attendez-vous à obtenir une solution? J'ai demandé dans un commentaire précédent: Pourquoi voulez-vous cette ligne: NULL | 28 | Global3 dans les résultats? aussi pourquoi ne voulez-vous pas NULL | 27 | Global2?


Parce que les administrateurs 1 ont déjà ajouté 26 et 27 à DisabledCatégories


@Davidboe Voir ma réponse modifiée


3 Réponses :


0
votes

Je pense que vous voulez:

select c.*
from categories c
where c.administrators = 1 or
      c.administrators is null;


1 commentaires

Cette requête présente également d'autres administrateurs comme 2 | 24 | Jemmy



0
votes

de vos échantillons de données et des résultats attendus, je pense que c'est la requête que vous souhaitez: xxx pré>

voir le Démo .
Résultats: P>

| administrators | id  | name   |
| -------------- | --- | ------ |
| 1              | 23  | David  |
|                | 28  | GLOBAL |


6 commentaires

Ma sortie administrateurs | id | Nom 1 | 23 | David


@Davidboe Voir la démo de ma réponse.


désolé chèque mon édition, je veux masquer les noms globaux déjà désactivés dans la table des catégories handicapées


@Davidboe Le même code fonctionne pour votre nouvelle exigence. Vérifiez ma réponse modifiée.


Dans votre code, vous ajoutez des valeurs ("1 '",' 23 '), (' 2 ',' 24 '); Essayez d'utiliser (' 1 ',' 25 '), ('2', '26'), ('2', '27'); parce que les administrateurs 1 ou 2 peuvent désactiver l'un des noms mondiaux


Dans mon code, j'utilise les échantillons de données de votre question et la requête renvoie votre sortie attendue. Parce que les administrateurs 1 ou 2 peuvent désactiver l'un des noms globaux Qu'est-ce que c'est? Avez-vous mentionné quelque chose comme ça dans votre question?



0
votes

Ici, vous pouvez essayer la jointure extérieure gauche sans intersection: xxx

espère que cela fonctionnera.


0 commentaires