Page 1 sur 2

Problème de requête

Posté : 12 mai 2006, 10:33
par Cécile85
Bonjour,

Voila j'ai un problème de requete. J'ai fait :

Code : Tout sélectionner

SELECT responsable.num_pers, nom_pers, prenom_pers, nom_mag FROM responsable, magasin, represente, represente2, lieux WHERE (responsable.num_pers = represente.num_pers AND represente.matricule_mag = magasin.matricule_mag) OR (responsable.num_pers = represente2.num_pers AND represente2.matricule_lieux = lieux.matricule_lieux AND lieux.matricule_mag= magasin.matricule_mag) AND ( (nom_pers LIKE 'dupond%') OR (nom_mag LIKE 'dupond%') ) ORDER BY nom_pers ASC



je pense que mon problème vien de mon from, en effet ensuite dans le where vu que je fais des OR, je n'utilise pas toute les tables
Je sais pas trop comment vous l'expliquer, j'espère que vous comprenez mon problème. Cela ne m'affiche pas d'erreur, mais j'ai pas de résultat pour autant.
En faite je pense qu'il faudrai faire une sorte de OR aussi pour le from genre :
FROM responsable, magasin, (represente or (represente2, lieux))
vous voyer ou je veux en venir ?


merci d'avance

Re: Problème de requête

Posté : 12 mai 2006, 10:57
par ouckileou
vous voyer ou je veux en venir ?
Non pas vraiment...
Il faudrait déjà savoir un peu ce que tu veux faire :)

Je trouve ça un peu bizarre ces jointures dans des conditions, je suis pas sûr que ce soit possible, et je serais surtout curieux de voir à quoi c'est censé correspondre

Posté : 12 mai 2006, 11:00
par Cyrano
Je peux me tromper, mais à mon avis, il manque une paire de parenthèses, essaye ceci:

Code : Tout sélectionner

SELECT responsable.num_pers, nom_pers, prenom_pers, nom_mag FROM responsable, magasin, represente, represente2, lieux WHERE( (responsable.num_pers = represente.num_pers AND represente.matricule_mag = magasin.matricule_mag) OR(responsable.num_pers = represente2.num_pers AND represente2.matricule_lieux = lieux.matricule_lieux AND lieux.matricule_mag= magasin.matricule_mag) ) AND(nom_pers LIKE 'dupond%' OR nom_mag LIKE 'dupond%') ORDER BY nom_pers ASC
Note : le SQL, ce n'est pas du PHP, j'ai déplacé le sujet.

Posté : 12 mai 2006, 11:03
par ouckileou
Ah oui c'est vraiment possible :)

Mais je trouve ça compliqué...

Posté : 12 mai 2006, 11:05
par Cécile85
Merci pour avoir deplacé le sujet, j'ai remarqué que je m'étais trompé juste après l'avoir posté.

J'ai testé la requete, ça me fait toujours la même chose, donc rien, ni erreur, ni affichage d'enregistrement.

Posté : 12 mai 2006, 11:08
par Cyrano
Il faudrait avoir la structure des tables et un petit jeu d'essai avec en plus un exemple de ce que tu voudrais obtenir pour faire des tests... :-k

Posté : 12 mai 2006, 11:14
par Cécile85
en faite j'ai cinq tables qui sont relier de cette facon

responsable represente (identifiant de responsable et magasin), magasin
responsable, represente2 (identifiant de responsable et lieux), lieux(identifiant de magasin), magasin

magasin c'est par exemple auchan donc le/les responsable(s) c'est le directeur... de tout les auchan

lieux c'est auchan à limoges donc le/les responsable(s) c'est le responsable, commercial seulement de limoges.

Et moi je voudrai par exemple quand on donne le nom d'un magasin que l'on ai tout les responsables de tout les lieux et du magasin correspondant.
ou sin l'on donne le nom que l'on ai tout les magasin ou se responsable porte se nom.

j'espère mettre mieux fait comprendre

merci

Posté : 12 mai 2006, 11:20
par Cécile85
Structure de la table magasin

MATRICULE_MAG
CODE_VILLE
NOM_MAG
ADRUE_MAG
TEL_MAG
FAX_MAG
EMAIL_MAG
DATE_OUVERTURE
SITE
COMMENTAIRE

Structure de la table lieux
MATRICULE_LIEUX
MATRICULE_MAG
CODE_VILLE
AD_RUE_LIEUX
CONSO_COMPRISE
SITE
COMMENTAIRE
FACILITE_DACCES

Structure de la table represente
NUM_PERS
MATRICULE_MAG
CATEGORIE

Structure de la table represente2
NUM_PERS
MATRICULE_LIEUX
CATEGORIE

Structure de la table responsable
NUM_PERS
CODE_VILLE
FAX_DR
NOM_PERS
PRENOM_PERS
TELFIX_PERS
TELPOR_PERS
EMAIL_PERS
AD_RUE
SUPPL_AD

Posté : 12 mai 2006, 11:42
par Cyrano
Bon attends, on fait du développement, on va essayer de faire ça proprement si tu veux bien : quand je parle de structure, je souhaite un truc lisible avec des informations utilisable sans trop devoir commencer par passer une heure à comprendre ce qui correspond à quoi.

Exemple de ce que j'espérais:

Code : Tout sélectionner

Structure +---------------------------------+ | represente | +---------------+-----------+-----+ | NUM_PERS |INT(11) |FK,PK| | MATRICULE_MAG |INT(11) |FK,PK| | CATEGORIE |VARCHAR(64)| | +---------------+-----------+-----+ Jeu d'essai +--------------------------------------+ | represente | +----------+---------------+-----------+ | NUM_PERS | MATRICULE_MAG | CATEGORIE | +----------+---------------+-----------+ | 1| 12| Auchan | | 1| 14| Auchan | | 2| 18| Auchan | | 3| 18| Auchan | | 3| 11| Auchan | +----------+---------------+-----------+
Avec le bloc-note et une police de caractère du genre courier, tu peux préparer tes schémas pour les coller ici ensuite. Après ça, tu indiques la liste des données que tu voudrais extraire par rapport au jeu d'essai indiqué et on aura pas de difficultés à te montrer le chemin.

Posté : 12 mai 2006, 14:18
par Cécile85

Code : Tout sélectionner

+---------------------------------+ | represente | +---------------+-----------+-----+ | NUM_PERS |bigint(4) |FK,PK| | MATRICULE_MAG |char(4) |FK,PK| | CATEGORIE |char(32) | | +---------------+-----------+-----+ Jeu d'essai +--------------------------------------+ | represente | +----------+---------------+-----------+ | NUM_PERS | MATRICULE_MAG | CATEGORIE | +----------+---------------+-----------+ | 1| 1| Directeur | | 3| 2| Commercial| +----------+---------------+-----------+ +---------------------------------+ | represente2 | +---------------+-----------+-----+ | NUM_PERS |bigint(4) |FK,PK| |MATRICULE_LIEUX|char(6) |FK,PK| | CATEGORIE |char(32) | | +---------------+-----------+-----+ Jeu d'essai +--------------------------------------+ | represente2 | +----------+---------------+-----------+ | NUM_PERS |MATRICULE_LIEUX| CATEGORIE | +----------+---------------+-----------+ | 1| 2| Comptable | | 3| 3| Directeur | +----------+---------------+-----------+ +---------------------------------+ | responsable | +---------------+-----------+-----+ | NUM_PERS |bigint(4) | PK| | NOM_PERS |char(32) | | | PRENOM_PERS |char(32) | | +---------------+-----------+-----+ Jeu d'essai +--------------------------------------+ | responsable | +----------+---------------+-----------+ | NUM_PERS | Nom_pers |prenom_pers| +----------+---------------+-----------+ | 1| Dupond | Pierre | | 2| Dupont | Paul | | 3| Faure | Jacques | | 4| Moreau | François | +----------+---------------+-----------+ +---------------------------------+ | lieux | +---------------+-----------+-----+ |matricule_lieux|bigint(6) |PK | |matricule_mag |char(4) |FK | | adresse |char(75) | | +---------------+-----------+-----+ Jeu d'essai +---------------------------------------------+ | lieux | +-----------------+---------------+-----------+ | matricule_lieux | matricule_mag |adresse | +-----------------+---------------+-----------+ | 1| 1 | Poitier | | 2| 1 | Limoges | | 3| 2 | Nantes | | 4| 3 | Poitiers | | 5| 3 | Paris | +-----------------+---------------+-----------+ +---------------------------------+ | magasin | +---------------+-----------+-----+ |nom_mag |bigint(32) | | |matricule_mag |char(4) |PK | | adresse |char(75) | | +---------------+-----------+-----+ Jeu d'essai +---------------------------------------------+ | magasin | +-----------------+---------------+-----------+ | matricule_mag | nom_mag |adresse | +-----------------+---------------+-----------+ | 1| Auchan | paris | | 2| carrefour| paris | | 3| casino | lille | | 4| cora | nante | +-----------------+---------------+-----------+

si je tape dupond

ça doi m'afficher

1----Dupond----Pierre----Auchan

De même que si je tape Auchan

Posté : 12 mai 2006, 14:54
par Cyrano
Ok, faut que je fasse des tests, je reviens dès que j'obtiens le résultat voulu :)

Posté : 12 mai 2006, 14:59
par ouckileou
Question bête :

ce ne serait pas plus simple de préciser le type de recherche qu'on souhaite faire (sur un nom, sur un magasin) et de construire la requête en fonction ?

Posté : 12 mai 2006, 15:07
par Cécile85
ce n'est pas le problème, ouckileou pour ça il suffit de

Code : Tout sélectionner

AND ( (nom_pers LIKE 'dupond%') OR (nom_mag LIKE 'dupond%') ) ORDER BY nom_pers ASC
le problème est que l'on ne sait pas si la personne est responsable d'un magasin ou d'un lieu.[/code]

Posté : 12 mai 2006, 15:13
par ouckileou
OK désolé je me retire alors ce sujet est trop tordu pour moi :P

Posté : 12 mai 2006, 15:25
par Cécile85
on me le dit tout le temps que je suis tordu :D