IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Requête qui ne marche pas très similaire à une qui marche


Sujet :

Requêtes MySQL

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut Requête qui ne marche pas très similaire à une qui marche
    Bonjour,

    j'ai beau chercher, je ne comprends pas pourquoi SELECT s.name FROM `statustype` s INNER JOIN `tickets` t ON t.Statustype=s.id where (t.id="INC000006733169") ne donne aucun résultat alors que SELECT p.name FROM `prioritytype` p INNER JOIN `tickets` t ON t.Prioritytype=p.id where (t.id="INC000006733169") en donne un.


    statustype :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    DROP TABLE IF EXISTS `statustype`;
    CREATE TABLE IF NOT EXISTS `statustype` (
      `id` smallint(3) NOT NULL AUTO_INCREMENT,
      `name` varchar(13) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
      PRIMARY KEY (`id`),
      UNIQUE KEY `name` (`name`)
    ) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    DROP TABLE IF EXISTS `statustype`;
    CREATE TABLE IF NOT EXISTS `statustype` (
      `id` smallint(3) NOT NULL AUTO_INCREMENT,
      `name` varchar(13) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
      PRIMARY KEY (`id`),
      UNIQUE KEY `name` (`name`)
    ) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

    proritytype :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DROP TABLE IF EXISTS `prioritytype`;
    CREATE TABLE IF NOT EXISTS `prioritytype` (
      `id` smallint(2) NOT NULL AUTO_INCREMENT,
      `name` varchar(6) COLLATE latin1_bin NOT NULL DEFAULT '',
      PRIMARY KEY (`id`),
      UNIQUE KEY `name` (`name`)
    ) ENGINE=MyISAM AUTO_INCREMENT=31 DEFAULT CHARSET=latin1 COLLATE=latin1_bin;

    tickets :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    DROP TABLE IF EXISTS `tickets`;
    CREATE TABLE IF NOT EXISTS `tickets` (
      `id` varchar(18) COLLATE utf8_bin NOT NULL,
      `Product_Name` varchar(25) COLLATE utf8_bin DEFAULT NULL,
      `Assigned_Group` varchar(30) COLLATE utf8_bin DEFAULT NULL,
      `Submitted_Date` datetime NOT NULL,
      `Last_Resolved_Date` datetime NOT NULL,
      `Summary` varchar(200) COLLATE utf8_bin NOT NULL,
      `Prioritytype` smallint(2) NOT NULL,
      `Statustype` smallint(3) NOT NULL,
      `Area` varchar(10) COLLATE utf8_bin DEFAULT NULL,
      `Country` varchar(10) COLLATE utf8_bin DEFAULT NULL,
      `Submitter_SESA` int(6) NOT NULL,
      `Customer_SESA` int(6) NOT NULL,
      `Organization` varchar(30) COLLATE utf8_bin DEFAULT NULL,
      `Incident_Type` varchar(20) COLLATE utf8_bin DEFAULT NULL,
      `Reported_Source` varchar(20) COLLATE utf8_bin DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `Prioritytype` (`Prioritytype`),
      KEY `Statustype` (`Statustype`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    salut,

    bah parce que ta table statustype ne contient aucun enregistrement correspondant à la jointure et au filtre

    Et tu continues avec MyISAM, InnoDB, latin1, latin1_bin, utf8, utf8_bin ça va être un beau bordel crois-moi
    Pourquoi tu ne suis pas les conseils que l'on te donne, c'est usant...

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    La condition de jointure ON t.Statustype=s.id est invalide puisque la colonne t.Statustype n'existe pas ! Statustype est un nom de table, pas de colonne
    EDIT : c'est d'ailleurs la même chose sur la deuxième requête

    De plus, les chaînes de caractères doivent de préférence être délimitées par des quotes simples

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Les collate "latin" and so on, ça fait longtemps que je les ai changés et ce que j'ai mis dans mon post, ce sont des vieux exports (ça tombe bien car j'avais trouvé pour changer les collate, mais je sais plus faire). J'en ai refait des nouveaux :

    Priority :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DROP TABLE IF EXISTS `priority`;
    CREATE TABLE IF NOT EXISTS `priority` (
      `id` smallint(2) NOT NULL AUTO_INCREMENT,
      `name` varchar(6) COLLATE utf8_bin NOT NULL DEFAULT '',
      PRIMARY KEY (`id`),
      UNIQUE KEY `name` (`name`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

    Status :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    DROP TABLE IF EXISTS `status`;
    CREATE TABLE IF NOT EXISTS `status` (
      `id` smallint(3) NOT NULL AUTO_INCREMENT,
      `name` varchar(13) COLLATE utf8_bin NOT NULL DEFAULT '',
      PRIMARY KEY (`id`),
      UNIQUE KEY `name` (`name`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

    Tickets :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    DROP TABLE IF EXISTS `tickets`;
    CREATE TABLE IF NOT EXISTS `tickets` (
      `id` varchar(18) COLLATE utf8_bin NOT NULL,
      `Product_Name` varchar(25) COLLATE utf8_bin DEFAULT NULL,
      `Assigned_Group` varchar(30) COLLATE utf8_bin DEFAULT NULL,
      `Submitted_Date` datetime NOT NULL,
      `Last_Resolved_Date` datetime NOT NULL,
      `Summary` varchar(200) COLLATE utf8_bin NOT NULL,
      `Priority` smallint(2) NOT NULL,
      `Status` smallint(3) NOT NULL,
      `Region` varchar(10) COLLATE utf8_bin DEFAULT NULL,
      `Country` varchar(10) COLLATE utf8_bin DEFAULT NULL,
      `Submitter_SESA` int(6) NOT NULL,
      `Customer_SESA` int(6) NOT NULL,
      `Organization` varchar(30) COLLATE utf8_bin DEFAULT NULL,
      `Incident_Type` varchar(20) COLLATE utf8_bin DEFAULT NULL,
      `Reported_Source` varchar(20) COLLATE utf8_bin DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `Prioritytype` (`Priority`),
      KEY `Statustype` (`Status`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


    Et sinon, la requête, elle marche maintenant (pas compris pourquoi j'avais un problème...)

    A noter que certains noms ont changé (Statustype=>Status Prioritytype=>Priority Area=>Region)
    Status et Priority sont le nom de tables et de colonnes (de la table Tickets)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Pour supprimer la confusion entre nom de table et nom de colonne, j'ai renommé les 2 colonnes : Priority_Key et Status_Key.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    C'est surtout qu'il faut communiquer le script à jour, sans quoi on réfléchit inutilement sur des choses qui sont sans rapport avec la situation réelle.

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 385
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Oui, je suis d'accord. Cela dit, le script php, lui, était à jour, ainsi que la table SQL tickets, qui montrait que les colonnes Prioritytype et Statustype existaient, même si elles ont changé de nom maintenant !
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  8. #8
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 731
    Points : 1 416
    Points
    1 416
    Par défaut
    Bonsoir,
    Citation Envoyé par laurentSc Voir le message
    Oui, je suis d'accord. Cela dit, le script php, lui, était à jour,
    C'est ce que je me disais aussi.
    Ils sont nuls.
    Ils pourraient suivre un peu le fil des scripts et déboguer par eux mêmes.
    C'est pas comme si c'était sur leur bonne volonté qu'ils fournissent des réponses.

    Ah, ce petit personnel, on n'en fait rien de bon.

    Bon c'est bien la dernière fois et c'est parce qu'on me le demande : merci de vos réponses et de votre temps.
    Le savoir est une nourriture qui exige des efforts.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Une requête qui ne marche pas sur tous les enregistrements
    Par Marc22 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/04/2010, 13h20
  2. Requête qui ne marche pas sur une table Joomla.
    Par tintin72 dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/02/2010, 17h51
  3. Réponses: 8
    Dernier message: 26/01/2006, 14h47
  4. [php-mysql] requête qui ne marche pas....
    Par sanosuke85 dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/01/2006, 17h18
  5. Une requête qui ne reconnait pas is not null
    Par LeBauw dans le forum Access
    Réponses: 2
    Dernier message: 08/09/2005, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo