Problème de requête

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de requête

par Cyrano » 12 mai 2006, 17:17

un entier non signé sera toujours positif, tandis que signé comportera des valeurs négatives ou positives.

Voir ici dans la doc

par Cécile85 » 12 mai 2006, 17:05

juste pour savoir c'est quoi unsigned
merci

par Cécile85 » 12 mai 2006, 17:02

ok merci, je verrai ça lundi, je dois partir du taf.

merci, bon week end

par Cyrano » 12 mai 2006, 16:58

Observe bien les structures, je t'ai reproduit directement ce qui sort de MySQL et comme je t'ai dit, j'ai dû modifier quelques détails (types de champs et j,ai mis tous les noms de colonnes en minuscule.

Tiens, en bonus, je te mets le script de création :

Code : Tout sélectionner

-- phpMyAdmin SQL Dump -- version 2.8.0-rc1 -- http://www.phpmyadmin.net -- -- Serveur: localhost -- Généré le : Vendredi 12 Mai 2006 à 16:56 -- Version du serveur: 5.0.21 -- Version de PHP: 5.1.4 -- -- Base de données: `test` -- -- -------------------------------------------------------- -- -- Structure de la table `lieux` -- DROP TABLE IF EXISTS `lieux`; CREATE TABLE IF NOT EXISTS `lieux` ( `matricule_lieux` int(6) unsigned NOT NULL, `matricule_mag` int(4) unsigned NOT NULL, `adresse` char(75) binary NOT NULL, PRIMARY KEY (`matricule_lieux`) ) TYPE=MyISAM; -- -- Contenu de la table `lieux` -- INSERT INTO `lieux` (`matricule_lieux`, `matricule_mag`, `adresse`) VALUES (1, 1, 'Poitiers'), (2, 1, 'Limoges'), (3, 2, 'Nantes'), (4, 3, 'Poitiers'), (5, 3, 'Paris'); -- -------------------------------------------------------- -- -- Structure de la table `magasin` -- DROP TABLE IF EXISTS `magasin`; CREATE TABLE IF NOT EXISTS `magasin` ( `nom_mag` char(32) binary NOT NULL, `matricule_mag` int(4) unsigned NOT NULL, `adresse` char(75) binary NOT NULL, PRIMARY KEY (`matricule_mag`) ) TYPE=MyISAM; -- -- Contenu de la table `magasin` -- INSERT INTO `magasin` (`nom_mag`, `matricule_mag`, `adresse`) VALUES ('Auchan', 1, 'Paris'), ('Carrefour', 2, 'Paris'), ('Casino', 3, 'Lille'), ('Cora', 4, 'Nantes'); -- -------------------------------------------------------- -- -- Structure de la table `represente` -- DROP TABLE IF EXISTS `represente`; CREATE TABLE IF NOT EXISTS `represente` ( `num_pers` tinyint(4) unsigned NOT NULL, `matricule_mag` int(4) unsigned NOT NULL, `categorie` char(32) binary NOT NULL, PRIMARY KEY (`num_pers`,`matricule_mag`) ) TYPE=MyISAM; -- -- Contenu de la table `represente` -- INSERT INTO `represente` (`num_pers`, `matricule_mag`, `categorie`) VALUES (1, 1, 'Directeur'), (3, 2, 'Commercial'); -- -------------------------------------------------------- -- -- Structure de la table `represente2` -- DROP TABLE IF EXISTS `represente2`; CREATE TABLE IF NOT EXISTS `represente2` ( `num_pers` tinyint(4) unsigned NOT NULL, `matricule_lieux` int(6) unsigned NOT NULL, `categorie` char(32) binary NOT NULL, PRIMARY KEY (`num_pers`,`matricule_lieux`) ) TYPE=MyISAM; -- -- Contenu de la table `represente2` -- INSERT INTO `represente2` (`num_pers`, `matricule_lieux`, `categorie`) VALUES (1, 1, 'Comptable'), (3, 2, 'Directeur'); -- -------------------------------------------------------- -- -- Structure de la table `responsable` -- DROP TABLE IF EXISTS `responsable`; CREATE TABLE IF NOT EXISTS `responsable` ( `num_pers` int(11) unsigned NOT NULL, `nom_pers` char(32) binary NOT NULL, `prenom_pers` char(32) binary NOT NULL, PRIMARY KEY (`num_pers`) ) TYPE=MyISAM; -- -- Contenu de la table `responsable` -- INSERT INTO `responsable` (`num_pers`, `nom_pers`, `prenom_pers`) VALUES (1, 'Dupond', 'Pierre'), (2, 'Dupont', 'Paul'), (3, 'Faure', 'Jacques'), (4, 'Moreau', 'François');

par Cécile85 » 12 mai 2006, 16:55

je tiens à te remercier pour tout le temps que tu as passer a m'aider, il y en a beaucoup qui aurai laisser tomber. Donc MERCI

par Cécile85 » 12 mai 2006, 16:53

Bon là je ne comprend vraiment rien, toi ça marche et moi rien. ça me fait toujours la même chose, c'est a dire rien, pas d'erreur, pas de résultat.

par Cyrano » 12 mai 2006, 16:42

Bon allez, je te remets tout ça proprement : attention, j'ai du faire quelques modifications dans certains types de champs pour la cohérence de l'ensemble :
LES TABLES :

Code : Tout sélectionner

magasin; +---------------+-----------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+-----------------+------+-----+---------+-------+ | nom_mag | char(32) | NO | | NULL | | | matricule_mag | int(4) unsigned | NO | PRI | NULL | | | adresse | char(75) | NO | | NULL | | +---------------+-----------------+------+-----+---------+-------+ lieux; +-----------------+-----------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+-----------------+------+-----+---------+-------+ | matricule_lieux | int(6) unsigned | NO | PRI | NULL | | | matricule_mag | int(4) unsigned | NO | | NULL | | | adresse | char(75) | NO | | NULL | | +-----------------+-----------------+------+-----+---------+-------+ responsable; +-------------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------------+------+-----+---------+-------+ | num_pers | int(11) unsigned | NO | PRI | NULL | | | nom_pers | char(32) | NO | | NULL | | | prenom_pers | char(32) | NO | | NULL | | +-------------+------------------+------+-----+---------+-------+ represente; +---------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------------+------+-----+---------+-------+ | num_pers | tinyint(4) unsigned | NO | PRI | NULL | | | matricule_mag | int(4) unsigned | NO | PRI | NULL | | | categorie | char(32) | NO | | NULL | | +---------------+---------------------+------+-----+---------+-------+ represente2; +-----------------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+---------------------+------+-----+---------+-------+ | num_pers | tinyint(4) unsigned | NO | PRI | NULL | | | matricule_lieux | int(6) unsigned | NO | PRI | NULL | | | categorie | char(32) | NO | | NULL | | +-----------------+---------------------+------+-----+---------+-------+
DONNEES :

Code : Tout sélectionner

responsable; +----------+----------+-------------+ | num_pers | nom_pers | prenom_pers | +----------+----------+-------------+ | 1 | Dupond | Pierre | | 2 | Dupont | Paul | | 3 | Faure | Jacques | | 4 | Moreau | François | +----------+----------+-------------+ magasin; +-----------+---------------+---------+ | nom_mag | matricule_mag | adresse | +-----------+---------------+---------+ | Auchan | 1 | Paris | | Carrefour | 2 | Paris | | Casino | 3 | Lille | | Cora | 4 | Nantes | +-----------+---------------+---------+ lieux; +-----------------+---------------+----------+ | matricule_lieux | matricule_mag | adresse | +-----------------+---------------+----------+ | 1 | 1 | Poitiers | | 2 | 1 | Limoges | | 3 | 2 | Nantes | | 4 | 3 | Poitiers | | 5 | 3 | Paris | +-----------------+---------------+----------+ represente; +----------+---------------+------------+ | num_pers | matricule_mag | categorie | +----------+---------------+------------+ | 1 | 1 | Directeur | | 3 | 2 | Commercial | +----------+---------------+------------+ represente2; +----------+-----------------+-----------+ | num_pers | matricule_lieux | categorie | +----------+-----------------+-----------+ | 1 | 1 | Comptable | | 3 | 2 | Directeur | +----------+-----------------+-----------+
LA REQUETE :

Code : Tout sélectionner

mysql> SELECT DISTINCT(responsable.num_pers), nom_pers, prenom_pers, nom_mag -> FROM responsable, represente, represente2, lieux, magasin -> 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%' -> ORDER BY nom_pers ASC; +----------+----------+-------------+---------+ | num_pers | nom_pers | prenom_pers | nom_mag | +----------+----------+-------------+---------+ | 1 | Dupond | Pierre | Auchan | +----------+----------+-------------+---------+
Attention, c'est sensible à la casse, donc si tu mets 'Dupond%', ça va passer, si tu mets 'dupond%', tu n'auras rien.

Enjoy! ;)

par Cécile85 » 12 mai 2006, 15:25

on me le dit tout le temps que je suis tordu :D

par ouckileou » 12 mai 2006, 15:13

OK désolé je me retire alors ce sujet est trop tordu pour moi :P

par Cécile85 » 12 mai 2006, 15:07

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]

par ouckileou » 12 mai 2006, 14:59

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 ?

par Cyrano » 12 mai 2006, 14:54

Ok, faut que je fasse des tests, je reviens dès que j'obtiens le résultat voulu :)

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

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

par Cyrano » 12 mai 2006, 11:42

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.

par Cécile85 » 12 mai 2006, 11:20

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