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 :

Problème de select multiples dans plusieurs tables


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Problème de select multiples dans plusieurs tables
    bonjour,

    J'ai un problème, je voudrais faire une requête sur plusieurs tables en même temps (3 pour être plus précis), et avec d'autres SELECT dans le WHERE (excusez-moi pour le vocabulaire).

    voici la requête : $query = "SELECT * FROM premise_price AS t1, building_price AS t2, room_price AS t3 WHERE ((t1.priority='999') AND (t1.premise_id='".$pid."')) || ((t2.priority='999') AND (t2.building_id IN (SELECT building.building_id FROM building WHERE building.premise_id='".$pid."'))) || ((t3.priority='999') AND (t3.room_id IN (SELECT room.room_id FROM room WHERE room.building_id IN (SELECT building.building_id FROM building WHERE building.premise_id='".$pid."'))))";

    bon ok je vous l'accorde elle est pas courte.
    Le problème est que la requete m'affiche des valeurs qui ne devraient pas, plus précisément le problème est pour la prise en compte du t3.priority='999'. Lorsque je retire l'une des condition, comme ça :
    $query = "SELECT * FROM premise_price AS t1, building_price AS t2, room_price AS t3 WHERE ((t1.priority='999') AND (t1.premise_id='".$pid."')) || ((t3.priority='999') AND (t3.room_id IN (SELECT room.room_id FROM room WHERE room.building_id IN (SELECT building.building_id FROM building WHERE building.premise_id='".$pid."'))))";
    la requête ne m'affiche plus les valeurs que je ne veux pas, donc tout va bien, mais dès que je remet la requete que je veux (la première) les valeurs que je ne veux pas sont réafficher!

    Je suis complêtement perdu, si quelqu'un a une idée ??!!

  2. #2
    Membre régulier Avatar de TrEiZe85
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Points : 88
    Points
    88
    Par défaut
    simple question dans ta requete je pense que les "||" ne sont pas autorisés dans une requete SQL met plutot "OR"

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    J'ai tenté mais ça change rien !
    Merci quand même !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bon alors étant en manque de temps j'ai fini par adopté une solution plus simple, mais plus longue, j'ai divisé ma requête en trois et j'ai créer une fonction qui me range les informations des trois requêtes dans un seul tableau.

    Voici les trois requêtes avec l'appel à la fonction :
    $query1 = "SELECT * FROM premise_price WHERE (priority='999') AND (premise_id='".$pid."')";
    getPriceInformation($query1,'premise');
    $query2 = "SELECT * FROM building_price WHERE (priority='999') AND (building_id IN (SELECT building.building_id FROM building WHERE building.premise_id='".$pid."'))";
    getPriceInformation($query2,'building');
    $query3 = "SELECT * FROM room_price WHERE (priority='999') AND (room_id IN (SELECT room.room_id FROM room WHERE room.building_id IN (SELECT building.building_id FROM building WHERE building.premise_id='".$pid."')))";
    getPriceInformation($query3,'room');

    et voici la fonction, qui evidemment utilise des variables globales pour tout mettre dans un seul tableau :
    function getPriceInformation($query,$type) {
    global $table_price,$count_price;
    $result = mysql_query($query);
    $datatemp = mysql_fetch_array($result);
    if ($datatemp != "") {
    $result = mysql_query($query);
    while ($data = mysql_fetch_array($result)) {
    $table_price[$count_price]['type'] = $type;
    $table_price[$count_price]['price_id'] = $data['price_id'];
    $table_price[$count_price][$type.'_id'] = $data[$type.'_id'];
    $table_price[$count_price]['cost'] = $data['cost'];
    $table_price[$count_price]['month'] = $data['month'];
    $table_price[$count_price]['date'] = $data['date'];
    $table_price[$count_price]['month2'] = $data['month2'];
    $table_price[$count_price]['date2'] = $data['date2'];
    $table_price[$count_price]['stop'] = $data['stop'];
    $table_price[$count_price]['code'] = $data['code'];
    $table_price[$count_price]['year'] = $data['year'];
    $count++;
    }
    }
    }

    Pour la petite histoire je travaille seul sur un site anglais où déjà 3 developpeurs différents sont passés (un australien, un coréen et un français), je peux vous dire qu'il faut du courage pour décrypter le code !!!

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

Discussions similaires

  1. [MySQL] Enregistrer les valeurs d'un select multiple dans une table mysql
    Par barale61 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/04/2015, 14h58
  2. [MySQL] Selection dans plusieurs tables pour constituer un seul RecordSet
    Par mesken dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/10/2011, 21h25
  3. [SQL] Select dans plusieurs table
    Par benjam89 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/08/2007, 13h25
  4. Réponses: 4
    Dernier message: 08/06/2006, 20h06
  5. select multiple sur plusieurs tables
    Par syl2095 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/12/2004, 15h48

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