Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/10/2011, 21h21   #1
Invité de passage
 
Homme
Développeur décisionnel
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 1
Points : 1
Par défaut Recherche matricielle - recherche d'un groupe de valeurs

Bonsoir à tous,
Je tourne en rond depuis un moment sur cette requête, j'ai cette table :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
|----------|----------|----------|---------|----------|
|    ID    | param_id |  p_bool  |  p_num  | p_string |
|----------|----------|----------|---------|----------|
|   2000   |     1    |     0    |    0    |    OF    |
|   2000   |     2    |     0    |    0    |    F     |
|   2000   |     4    |     0    |    0    |          |
|   2000   |     5    |     0    |    0    |    TM    |
|   2000   |     6    |     0    |    0    |    TM    |
|   2000   |     7    |     0    |    0    |    TM    |
|   2000   |     8    |     0    |    0    |    TM    |
|   2000   |     9    |     0    |    0    |    T     |
|----------|----------|----------|---------|----------|
|   2006   |     4    |     1    |    0    |          |
|   2006   |     5    |     0    |    0    |    CP    |
|   2006   |     6    |     0    |    0    |    TM    |
|   2006   |     7    |     0    |    0    |    TM    |
|   2006   |     8    |     0    |    0    |    TM    |
|   2006   |     9    |     0    |    0    |    T     |
|   2006   |    10    |     0    |    0    |    T     |
|   2006   |    11    |     0    |    0    |    T     |
|----------|----------|----------|---------|----------|
un ensemble de données est groupé sous le même ID, chaque ensemble est unique (d'où un ID différent).
Je cherche à obtenir l'ID d'un groupe de données, bien sûr je connais tous les paramètres pour constituer la requête.
Je peux donc construire une matrice représentant toutes ces données mais je n'arrive pas à modéliser la requête que je dois employer.

On peut dire :
Si cette ligne ET cette ligne ET... appartenant au même ID alors retourner l'ID

C'est peut-être tout bête mais je n'y arrive pas

Merci par avance pour votre aide
yannicklal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2011, 14h07   #2
Invité de passage
 
Homme
Développeur décisionnel
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur décisionnel
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 1
Points : 1
Par défaut une solution

Je ne sais pas si c'est la moins mauvaise des solutions, mais le temps d’exécution est tout à fait correct :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
SELECT ID FROM TABLE
WHERE
ID IN (SELECT ID FROM TABLE WHERE param_id='1' AND bool_value=b'0' AND int_value='0' AND string_value='OF' )
AND
ID IN (SELECT ID FROM TABLE WHERE param_id='2' AND bool_value=b'0' AND int_value='0' AND string_value='F' )
AND
ID IN (SELECT ID FROM TABLE WHERE param_id='4' AND bool_value=b'1' AND int_value='0' AND string_value='' )
AND
ID IN (SELECT ID FROM TABLE WHERE param_id='5' AND bool_value=b'0' AND int_value='0' AND string_value='TM' )
AND
ID IN (SELECT ID FROM TABLE WHERE param_id='6' AND bool_value=b'0' AND int_value='0' AND string_value='TM' )
AND
ID IN (SELECT ID FROM TABLE WHERE param_id='7' AND bool_value=b'0' AND int_value='0' AND string_value='TM' )
AND
ID IN (SELECT ID FROM TABLE WHERE param_id='8' AND bool_value=b'0' AND int_value='0' AND string_value='TM' )
AND
ID IN (SELECT ID FROM TABLE WHERE param_id='9' AND bool_value=b'0' AND int_value='0' AND string_value='T' )
GROUP BY ID
Ceci retourne l'ID 2000.
Une autre alternative consiste à faire un SELECT DISTINCT mais le temps d’exécution est déplorable.
yannicklal est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h55.


 
 
 
 
Partenaires

Hébergement Web