La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  SELECT sur MySQL
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: SELECT sur MySQL  (Lu 933 fois)
SELECT sur MySQL
« sur: le 11-10-2004 a 14:43:23 »
pizzaoil
Membre récent
*

Hors-Ligne

Messages: 4



Je suis un lama!

Voir le Profil
Répondre avec citation

Voici mon pb:

J'ai une base de données qui ressemble à celle ci:

+----+----------+--------+
| id  | option  | value  |
+----+----------+--------+
| 2  | 411      | 1        |
+----+----------+--------+
| 101| 411      | 1        |
+----+----------+--------+
| 103| 410      | 2        |
+----+----------+--------+
| 2  | 410      | 2        |
+----+----------+--------+

Maintenant je souhaite obtenir le 'id' des enregistrements où
l' option=411 et value=1 ET option=410 et value=2.

En l'occurence dans mon exemple le résultat devrait retourner '2'. J'espere que cela est assez clair.

Merci pour votre aide

Rapporter au modérateur  

Re:SELECT sur MySQL
« Répondre #1 sur: le 11-10-2004 a 15:38:51 »
MarvinLeRouge
Superactif
****

Hors-Ligne

Messages: 584





Voir le Profil    WWW
Répondre avec citation

Salut,

Ta requète devrait ressembler à ça
Code:

select distinct id from table where option=411 and value=1
intersect
select distinct id from table where option=410 and value=2

Malheureusement pour toi, la commande intersect n'est pas encore supportée par MySql
Pb 2 : Tu pourrais émuler intersect avec une sous-requète, mais les sous-requètes ne sont supportées qu'à partir de la version 4.1.

J'ai bien peur que tu sois obligé de faire 2 requète et de faire toi-même le tri en php.

Rapporter au modérateur  

Développeur web / Création de site internet
jean@ceugniet.com
Jean Ceugniet, Développement web
SIRET : 523 611 044 00018
Re:SELECT sur MySQL
« Répondre #2 sur: le 11-10-2004 a 16:01:42 »
pizzaoil
Membre récent
*

Hors-Ligne

Messages: 4



Je suis un lama!

Voir le Profil
Répondre avec citation

Merci bcp!

En supposant que j'ai mysql 4.1 comment devra etre écrite ma sous requete?

Dois je faire appelle à une table temporaire?

Rapporter au modérateur  
Re:SELECT sur MySQL
« Répondre #3 sur: le 11-10-2004 a 17:00:02 »
pizzaoil
Membre récent
*

Hors-Ligne

Messages: 4



Je suis un lama!

Voir le Profil
Répondre avec citation

Effectivement ca marche en 4.1:

Code:
SELECT id
FROM tb1
WHERE id
IN (

SELECT id
FROM tb1
WHERE option = '411' AND value = '1'
) AND option = '410' AND value = '2'

Rapporter au modérateur  
Re:SELECT sur MySQL
« Répondre #4 sur: le 11-10-2004 a 22:11:40 »
erwinol
Iznogoud Deluxe
Modérateur Global
*****

Hors-Ligne

Sexe: Male
Messages: 1845



Que la FARCE soit avec toi

Voir le Profil    WWW
Répondre avec citation

Hein !? mais pourquoi chercher si compliqué ?

Une simple requête donne le résultat correct !!

Code:

SELECT T1.id
FROM tbl T1, tbl T2
WHERE T1.id = T2.id  /* jointure */
          AND T1.option = 411
          AND T1.value = 1
          AND T2.option = 410
          AND T2.value = 2


La principale difficulté (qui n'en est pas réellement une) est de faire la jointure entre les 2 tables. Cette requête devrait fonctionner parfaitement sur toute version de mySQL.

Rapporter au modérateur  

MySeoBox soumet vos sites sur des milliers d'annuaire
Vous possédez un annuaire ? Gagnez de l'argent avec celui-ci grâce à l'affiliation MySeoBox !
Re:SELECT sur MySQL
« Répondre #5 sur: le 11-10-2004 a 22:46:40 »
MarvinLeRouge
Superactif
****

Hors-Ligne

Messages: 584





Voir le Profil    WWW
Répondre avec citation

Personnellement je rajouterai un distinct, car la colonne qui se nomme id n'est pas une clé primaire, donc il peut y avoir plusieurs résultats identiques.
cf 1ère et dernière lignes de la table fournie en exemple.

Rapporter au modérateur  

Développeur web / Création de site internet
jean@ceugniet.com
Jean Ceugniet, Développement web
SIRET : 523 611 044 00018
Re:SELECT sur MySQL
« Répondre #6 sur: le 12-10-2004 a 10:03:46 »
pizzaoil
Membre récent
*

Hors-Ligne

Messages: 4



Je suis un lama!

Voir le Profil
Répondre avec citation

Effectivement celle si fonctionne également! et le distinct est nécessaire Merci!

Par contre si je veux rentrer un nouveau critère je dois obligatoirement écrire une autre jointure. N'est ce pas? et une autre  "table Tn". 

Rapporter au modérateur  
Re:SELECT sur MySQL
« Répondre #7 sur: le 13-10-2004 a 21:40:46 »
erwinol
Iznogoud Deluxe
Modérateur Global
*****

Hors-Ligne

Sexe: Male
Messages: 1845



Que la FARCE soit avec toi

Voir le Profil    WWW
Répondre avec citation

Citation de: MarvinLeRouge le le 11-10-2004 a 22:46:40
Personnellement je rajouterai un distinct, car la colonne qui se nomme id n'est pas une clé primaire, donc il peut y avoir plusieurs résultats identiques.
cf 1ère et dernière lignes de la table fournie en exemple.

Effectivement j'avais pas fait gaffe. Cela dit je donne l'apect de la requête, c'est à celui qui l'utilise de l'adapter à ses besoins

Rapporter au modérateur  

MySeoBox soumet vos sites sur des milliers d'annuaire
Vous possédez un annuaire ? Gagnez de l'argent avec celui-ci grâce à l'affiliation MySeoBox !
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg