begin process at 2012 05 27 00:36:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Problème de select multiples dans plusieurs tables


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

Problème de select multiples dans plusieurs tables

mercredi 9 mai 2007 à 08:39:11 | Problème de select multiples dans plusieurs tables

superseb801

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 ??!!
jeudi 10 mai 2007 à 02:23:02 | Re : Problème de select multiples dans plusieurs tables

superseb801

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 !!!


Cette discussion est classée dans : select, id, where, building, room


Répondre à ce message

Sujets en rapport avec ce message

Défit pour un pro [ par zazadec ] Question de se compliquer la vie, je dois reprendre un site avec une bdd déjà existante... bref vous avez compris j'ai pas le choix.2 tables T1 et T2 Optimisation d'une sous-requête SQL [ par Lugdunum2 ] Bonjour, Dans le cadre de l'optimisation des requêtes SQL d'un site web, je me retrouve avec une grande question dont je n'ai pas trouvé de réponse d problème résultat requête select [ par slayer07 ] Bonjour, je viens de faire une requête select sur 2 tables. Le souci que j'ai est que lors de l'exécution de la requête,il m'apparait 2 résultats avec [FIREBIRD] améliorer UPDATE ... WHERE VAR IN(SELECT...) [ par RV2931 ] Bonjour, J'effectue actuellement des requêtes imbriquées sous la forme [code=sql]UPDATE T1 SET T1.F1 = 'FOO' WHERE T1.ID IN ( SELECT T1.ID FROM T1 W Utilisation de clause where stockée en DB [ par Badside ] Bonjour, J'aimerais récupérer la somme de plusieurs montants stockés dans une table et sélectionnés sur des critères repris dans une clause where sto Cette sous-requête peut retourner au plus un enregistrement [ par mariam1987 ] Salut à tous, Je débute en SQL et j'ai créé la requête : <p c Problème avec une SP avec SELECT et WHERE multiple [ par SoyYo ] Salut, comme dit dans le titre, j'ai un problème avec une SP qui et un select: CREATE PROCEDURE `AdminConnect`(nom varchar(255), pass varchar(255)) B Besoin d'aide avec SELECT [ par dlcqty63j ] Bonjour,j'ai une requête : select PARAM, VALEUR, ID_MESURE  from TABLE_MESURE where PARAM='Courant' OR PARAM='Déplacement'order by PARAMETRE, ID_MESUR optimisation de la clause WHERE sur des champs dates [ par ThierH ] Bonjour j'ai une table SQL Server (2005) contenant plus de 50000 lignes. Dans chaque ligne, j'ai des données de type datetime, integer, ... Mon applic procedure de mise à jour [ par LiKayn ] Salut, je suis debutant en sql et je viens de commencer les procedures stockées dernierement. je travaille sur un mini projet en asp en relation avec


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 3,494 sec (3)

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