begin process at 2012 05 31 14:59:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Requete sur un champ mais plusieurs conditions


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Requete sur un champ mais plusieurs conditions

vendredi 15 février 2008 à 15:04:43 | Requete sur un champ mais plusieurs conditions

lowkey

Bonjour à tous !

Voici mon problème :

j'ai une bdd :

champ1 | champ2

12 | 1
12 | 2
13 | 1
14 | 1

J'aimerais faire une requete qui me selectionne le champ1 dans lequel le champ2 correspond à 1 et 2

Résultat voulu :

resultat
12

Mais je ne sais pas comment construire cette requete...
J'ai essayé des select champ1 from table WHERE champ2=1 or champ2=2 group by champ1
ou select champ1 from table group by champ1 having champ2=1 or champ2=2...
rien a faire, je ne trouve pas...



Quelqu'un a une idée?

Merci



lowkey
vendredi 15 février 2008 à 20:08:58 | Re : Requete sur un champ mais plusieurs conditions

malalam

Administrateur CodeS-SourceS
Hello,

SELECT t.champ1
FROM `table` AS t
INNER JOIN `table` AS t2 ON t2.champ1 = t.champ1 AND t2.champ2 <> t.champ2


samedi 16 février 2008 à 12:24:34 | Re : Requete sur un champ mais plusieurs conditions

lowkey

Salut malalam !

merci pour ta réponse.
Si au lieu d'avoir deux conditions, j'en ai trente (car en faite le nombre de condition varie en fonction des réponses retournées par une autre requete), il me faudra 30 inner join ?



lowkey
samedi 16 février 2008 à 12:41:40 | Re : Requete sur un champ mais plusieurs conditions

malalam

Administrateur CodeS-SourceS
Pas forcément, les conditions dans le inner join peuvent suffire. Il faudrait un exemple ?
samedi 16 février 2008 à 12:59:35 | Re : Requete sur un champ mais plusieurs conditions

lowkey

Merci pour ta rapidité.

En faite j'ai une requete du style : $marequete=mysql_query(SELECT id FROM table1 WHERE id2=14)
avec la table

table1
id | id2
1  | 14
2  | 14
3  | 14
4  | 14
5  | 14
6  | 15
7  | 15

Donc mes resultats sont 1,2,3,4,5

Ensuite j'ai une table :

table2
c1 | c2
34 | 1
34 | 2
34 | 3
34 | 4
34 | 5
35 | 1
35 | 2
35 | 3
35 | 4
35 | 5
36 | 1
37 | 1
37 | 2

Et donc je voudrais que ça me sorte tous les champs c1 (groupés) qui ont 1,2,3,4,5 en c2.

Le résultat ici serait 34,35

La requete devrait ressembler à
SELECT t1.c1
FROM `table2` AS t1
INNER JOIN `table2` AS t2 ON t2.c1 = t1.c1 AND t2.c2 <> t1.c2 ??

Il ne faudrait pas un AND ... IN $marequete quelque part ?

J'avoue ne pas du tout etre à l'aise avec les INNER JOIN, LEFT JOIN, et toute cette famille.

Merci pour ton aide



lowkey
samedi 16 février 2008 à 13:28:07 | Re : Requete sur un champ mais plusieurs conditions

malalam

Administrateur CodeS-SourceS
C'est très différent de ton 1er exemple ça ?

SELECT t2.c1
FROM table2 t2
INNER JOIN table1 t1 ON t1.id = t2.c2
WHERE t1.id2 = 14
GROUP BY t2.c1

samedi 16 février 2008 à 13:29:39 | Re : Requete sur un champ mais plusieurs conditions

malalam

Administrateur CodeS-SourceS
Si je puis me permettre, tu devrais utiliser pour tes clefs étrangèes le même nom dans ta table secondaire qu'elles ont dans leur table primaire (table2 : id pour le second champ).
Mais bon, comme c'est un exemple...:-)
samedi 16 février 2008 à 13:31:25 | Re : Requete sur un champ mais plusieurs conditions

malalam

Administrateur CodeS-SourceS
En gros, une structure correcte serait :
table 1:
t1_id, t1_c2

table2
t2_c1, t1_id

ce serait plus simple pour monter les requêtes et les comprendre au premier coup d'oeil.
samedi 16 février 2008 à 13:35:22 | Re : Requete sur un champ mais plusieurs conditions

malalam

Administrateur CodeS-SourceS
Au passage, quand tu peux éviter les IN, évite les...c'est très pratique, mais c'est aussi très lent. Et il y a une limite au-delà de laquelle ton serveur DB ne saura plus faire la requête, s'il a trop de valeurs dans le IN. Dans le cadre d'une requête dynamique, on ne le voit pas tout de suite, et ça peut avoir de graves conséquences (une de mes applis très importante et très grosse à mon taf a planté à cause de ça, j'ai dû reprendre toutes les requêtes).
samedi 16 février 2008 à 15:34:06 | Re : Requete sur un champ mais plusieurs conditions

lowkey

Merci pour toutes ces info, j'en prend bonne note.

Le problème pour le inner join, c'est que mes deux tables sont dans des bdd différentes (ma table1 pese 80 Mo a elle toute seule (liste quasi exaustive de tous les artisans de france...)).
Je met carrément les tables avec mes vrais requetes, ça sera plus simple à comprendre

base artisan :
table travail_artisan
id_artisan | id_prestation(correspond au travail de l'artisan)
1             | 12
1             | 16
1             | 48
3             | 12
4             | 23

base chantier :
table artisan:
id | fax | mail | code_postal
1  | xx  | xx    | xxxxx
3  | xx  | xx    | xxxxx
4  | xx  | xx    | xxxxx

Voila pour les bases.

J'ai un tableau avec des nombres : (correspond a ce qu'on retrouve dans artisan.travail_artisan.id_prestation)
$tab_p[1]=12;
$tab_p[2]=16;
$tab_p[3]=48;
...
La taille de ce tableau est inconnue.

J'avais fait quelque chose du genre

SELECT fax,mail, cp FROM chantier.artisan, artisan.travail_artisan WHERE chantier.artisan.id=artisan.travail_artisan.id_artisan WHERE artisan.travail_artisan.id_prestation=12 or artisan.travail_artisan.id_prestation=16 or artisan.travail_artisan.id_prestation=48 group by chantier.artisan.id

mais ça merdait...



lowkey

1 2 3

Cette discussion est classée dans : champ, requete, conditions, champ1, champ2


Répondre à ce message

Sujets en rapport avec ce message

Question requete mysql [ par zzzzzz ] salut j'ai plusieurs champs dont 1 champ nommé "id" qui est en auto increment et un autre champ nommé "titre" (et d'autres champs qui sont pas utiles Lister le contenu d'un champ mais avec des conditions ??? [ par pepekiss ] Bonjour, pour mon site, j'aurais besoin de lister le contenu d'un champ. Voilà le début de mon code.mysql_connect("localhost","root","");mysql_select_ Problème de recupération de variable contenant un champ de requete sql dans une page [ par Maiku ] BonjourJ'ai une liste déroulante, lorsque je choisis un champ de cette liste, une requete sql recuperer toutes les données de ce champ dans ma base my ENUM qui evolue [ par socomajor ] Bonjour a tous, merci de lire mon message :Mon problème : J'aimerais que mon champ ENUM dans ma base de donnée évolue, qu'il y est des valeurs qui se champ d'une table [ par jackrichard ] bonjour a tousVoila j'aimerai savoir si il y existe une requete qui au lieu de me retourner un enregistrement me renvoie la structure de ma table par problème de requete dynamique [ par bibine125 ] salut à tous! j'ai un pb de requete dynamique.je voudrai récupérer plusieurs champ de mon formulaire pour les intégrer dans ma requete sql. j'ai seul pb mysql ! [ par joduak ] Salut ! J'ai un léger pb de requete mysql. Je voudrais ajouter à mon champ kilometre ds ma table velo la valeur de ma variable $kilometre Ma requête pb avec history.back() et firefox [ par kun00538 ] bonjour a tousvoila je debut en php, je vient de faire un script de soumission de formulaire avec controle de l'existance du login,dans ie netscape su Requete sur la dernière heure [ par lolo80000 ] Bonjour,Voila j'ai une table avec un champ date (0000-00-00), un champ heure (00:00:00) et un champs débit et je voudrais faire une requete de selecti Requete Mysql [ par milkasoprano ] bonjour all !! comment allez vous ? je vous ecris car jai une question a propos du php.. jai essayé de cherché une solution dans les codes  source o


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales