Requête sur 2 tables un peu tordue [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 14-08-2005 à 15:58:41
Pourquoi tu as aussi une colonne App_id dans table1 ? C'est pas logique.
Marsh Posté le 14-08-2005 à 16:04:02
Code :
|
Marsh Posté le 14-08-2005 à 16:05:28
Citation : Si je t'assure ça se présente comme ça... |
Il faut sûrement commencer par revoir ça. Une seule table devrait suffire.
Marsh Posté le 14-08-2005 à 16:18:15
Ok merci beaucoup betsamee c'est bien ça que voulais savoir
Mais je crois que ça va être dur à adapter à mon code ... Je m'explique:
En fait kalex au départ je n'ai effectivement qu'une seule table:
- Table:
Code :
|
Le but final c'est d'obtenir ça, c'est à dire les users qui ont app1 et app2:
- Résultat:
Code :
|
C'est pour ça que j'avais d'abord commencé par en extraire 2 tables (comme j'ai posté au début du sujet) et je pensais pouvoir unifier les 2 simplement... mais je pense que ca devient compliqué et j'aimerais savoir s'il y a une autre possibilité. Qu'en pensez-vous?
Marsh Posté le 14-08-2005 à 16:25:45
Code :
|
Marsh Posté le 14-08-2005 à 16:34:07
Ou :
Code :
|
Marsh Posté le 14-08-2005 à 16:38:45
ma seconde reponse est fausse
petite reponse pas du tout optimale:
Code :
|
Marsh Posté le 14-08-2005 à 16:42:48
Sinon peut-être comme ça :
Code :
|
Marsh Posté le 14-08-2005 à 16:43:33
betsamee a écrit : ma seconde reponse est fausse
|
Ca c'est pour MySQL 5, je me trompe ?
Marsh Posté le 14-08-2005 à 16:45:57
teste avec mysql 5
mais ca marche a partir de 4.1.X a mon avis
Marsh Posté le 14-08-2005 à 17:18:03
D'abord merci à tous pour vos suggestions J'ai testé vos requêtes sous phpmyadmin et voila ce que ça me donne:
kalex ->
Citation : SELECT T1.User_id, T1.app_id FROM table T1 |
Alors les user_id renvoyés sont les bons, mais par contre il ne me liste pas les app_id pour chaque user_id
Il m'affiche:
User_id=1 , App_id =1
au lieu de:
User_id=1 , App_id =1
User_id=1 , App_id =2
betsamee ->
Citation : SELECT App_id ,User_id FROM table1 |
Ta requête fonctionne presque comme je le voudrais, mais comme le nombre d'app ne se limite pas à 2 (c'est à dire que app_id va de 1 à x) un autre problème se pose.
Pour les utilisateurs qui ont les app1, app2 et plus ça me renvoit ça:
Code :
|
Beegee ->
Citation : SELECT t1.App_id, t1.User_id |
Oui c'est tout à fait ça qu'il me faut! Par contre j'ai essayé de l'adapter à une recherche sur 3 app_id, donc pour les users qui ont app_id=1, app_id=2 et app_id=3 (parce qu'au final ca doit fonctionner sur x app_id) j'y suis pas arrivé, je n'arrive pas à filtrer correctement les résultats T'as pas une idée?
Encore merci en tout cas pour votre réactivité
Marsh Posté le 14-08-2005 à 17:24:04
*LighTninG* a écrit : D'abord merci à tous pour vos suggestions J'ai testé vos requêtes sous phpmyadmin et voila ce que ça me donne:
|
Les app_id, tu les connais déjà puisque tu les donnes dans la requête. Pourquoi faire des transferts inutiles ?
Marsh Posté le 14-08-2005 à 17:40:26
tout à fait, de toute façon, avec mySql ancienne version, pas de sous-requête donc on peut juste récupérer les User_id, avec le GROUP BY (...) HAVING COUNT(*) = X;
Marsh Posté le 14-08-2005 à 18:51:49
kalex -> Et bien en fait j'ai d'autres colonnes dans ces tables et pour que je puisse y accèder ensuite il me faut les app_id obligatoirement...
Sinon beegee tu pourras pas m'aider à adapter ta requête sur 3 app_id? pliz
Il doit me manquer une condition car j'ai des doublons qui apparaissent...
Code :
|
Marsh Posté le 14-08-2005 à 19:36:09
Ou alors, tu fais deux requêtes au lieu de transformer ton code en champ de bataille...
En plus, ça t'éviteras de transférer plusieurs fois les mêmes données.
Marsh Posté le 14-08-2005 à 19:40:43
Oui c'est sûr je préférerais aller au plus simple 2 requêtes ok, mais lesquelles?
Marsh Posté le 15-08-2005 à 01:20:11
Code :
|
Marsh Posté le 15-08-2005 à 19:12:14
Bon et bien merci beaucoup à vous 3 Voila les requêtes qui vont me servir finalement pour ma fonction de recherche.
- Celle de betsamee (avec laquelle j'ai fini par obtenir tout à fait ce que je voulais)
Code :
|
- Et la dernière de Beegee
Code :
|
Merci encore
Marsh Posté le 14-08-2005 à 15:53:43
Bonjour à tous ! Je dois faire une requête sur 2 tables qui se présentent comme ceci:
- Table 1:
- Table 2:
Je voudrais récupérer les users qui ont l'app 1 et l'app 2, en l'occurrence ici les users 3,4,5, de manière à obtenir ça:
Et surtout pas:
Cela fait un moment que je galère à trouver la bonne requête et tout ce que j'arrive à obtenir c'est justement ce que je ne veux pas...
Je vous remercie d'avance pour votre aide !
Message édité par *LighTninG* le 14-08-2005 à 15:57:15