Formulation de requête MySQL

Ce forum aborde toutes les questions qu'un codeur ou webmaster pourrait se poser, et n'ayant aucun rapport direct avec phpBB.
Tout ce qui peut concerner la récupération des sessions de phpBB sur votre site, doit se faire dans cette section.

Modérateur : Equipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com
Répondre
Avatar du membre
Auteur
pierredu
Resp. Extensions
Resp. Extensions
Messages : 1461
Enregistré le : 29 mai 2011 à 06:49
Localisation : Paris
Contact :

Formulation de requête MySQL

Message par pierredu »

Bonjour,

J'ai une table dans laquelle j'ai trois colonnes, genre, sgenre (sous-genre) et espece.
Les colonnes genre et espece sont toujours enseignées. Mais il arrive fréquemment que la colonne sgenre soit vide.
Je voudrais trouver les enregistrements qui ont sgenre vide, à la condition qu'il existe un enregistrement avec le même genre et un sgenre non vide.

Je n'y arrive pas.

Je vous joins un extrait de la table. Le genre Lucanus existe avec le sgenre vide.

Merci d'avance pour vos idées.
Fichiers joints
binom.zip
(980 Octets) Téléchargé 4 fois
Helix
Fondateur phpBB-fr.com
Fondateur phpBB-fr.com
Messages : 2851
Enregistré le : 08 oct. 2001 à 02:00
Localisation : France, Paris
Contact :

Re: Formulation de requête MySQL

Message par Helix »

Code : Tout sélectionner

SELECT sg.id_binom,
       sg.genre,
       sg.sgenre
FROM insect_binom sg
WHERE sg.sgenre = ''     -- Selection des `sgenre` **vide**
  AND sg.genre IN (      -- Pour laquelle il existe au moins une espèce avec: **même** `genre` et `sgenre` **non vide**
     -- Liste des `genre` dont le `sgenre` n'est **pas vide**
     SELECT DISTINCT(g.genre)
     FROM insect_binom g
     WHERE g.sgenre != ''
  );
Avatar du membre
Auteur
pierredu
Resp. Extensions
Resp. Extensions
Messages : 1461
Enregistré le : 29 mai 2011 à 06:49
Localisation : Paris
Contact :

Re: Formulation de requête MySQL

Message par pierredu »

Merci.
Je vais aller tester.

Cela colle parfaitement. Mille mercis.
Avatar du membre
ABDev
Programmationateur
Programmationateur
Messages : 15850
Enregistré le : 12 mai 2005 à 23:54

Formulation de requête MySQL

Message par ABDev »

Hello
Même résultat, mais sans sous-requête :

http://sqlfiddle.com/#!9/8e8dfd/9/0

Le fait qu'il n'y ait pas de sous-requête renvoie les résultats plus rapidement.
Par contre, sur la requête d'Helix, il y a une erreur de syntaxe. <> doit être utilisé à la place de !=
Ca fonctionne par compatibilité uniquement.
Pour se payer le luxe d'être feignant, il faut sans cesse faire travailler ses méninges ! (Korben)

On clique sur le bouton Répondre plutôt que le bouton Citer ...
Un problème avec une extension ? Pas de lien vers celle-ci ? Sujet ignoré !
Avatar du membre
Auteur
pierredu
Resp. Extensions
Resp. Extensions
Messages : 1461
Enregistré le : 29 mai 2011 à 06:49
Localisation : Paris
Contact :

Formulation de requête MySQL

Message par pierredu »

Merci.
C'est la première fois que je vois un INNER JOIN en action.
Pour le !=, je fais la même chose (j'ai trop longtemps écrit du C).
Avatar du membre
ABDev
Programmationateur
Programmationateur
Messages : 15850
Enregistré le : 12 mai 2005 à 23:54

Formulation de requête MySQL

Message par ABDev »

pierredu a écrit :
11 avr. 2021 à 17:41
C'est la première fois que je vois un INNER JOIN en action.
Je ne suis pas spécialement étonné.
phpBB utilise des jointures pas très propres :|.
Donc on prend de mauvaises habitudes.
Pour se payer le luxe d'être feignant, il faut sans cesse faire travailler ses méninges ! (Korben)

On clique sur le bouton Répondre plutôt que le bouton Citer ...
Un problème avec une extension ? Pas de lien vers celle-ci ? Sujet ignoré !
Répondre

Retourner vers « Coding, Webmastering et Sécurité informatique »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités