Sous - requêtes compatible ou non compatible

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 : Sous - requêtes compatible ou non compatible

par costadelo » 12 déc. 2006, 13:34

Bon bah je m'auto - répond !

http://guides.ovh.net/ConversionMysql5

Basculement mysql4 --> mysql5 !

Sous - requêtes compatible ou non compatible

par costadelo » 12 déc. 2006, 11:23

Bonjour à tous !!

J'ai développé un site en local grâce à WAMP server, et je l'ai uploadé hier sur un serveur d'OVH (http://www.ovh.com).
Seulement voilà lorsque je regarde le résultat, certaines requêtes (contenant des sous-requêtes) ne passent pas :( !

Configuration de WAMP :

phpMyAdmin - 2.9.0.3
MySQL: 5.0.27


Configuration de OVH :

phpMyAdmin - OVH - Version du client MySQL 5.0.18
MySQL : 4.0.25-standard-log

J'ai lu sur différents forums qu'il était possible que les sous-requêtes ne passent pas avant la version 4.1 de MySQL....

Comment contourner ce problème sachant que mes requêtes sont les suivantes :
$getTrio_archive = mkquery("

SELECT t.nom_trio, a.id_art, a.nom_art, a.prenom_art FROM trio AS t, artiste AS a WHERE 

 (a.id_art = t.id_art_2 AND t.id_art_2 IN (SELECT id_art_2 FROM trio WHERE id_art_1 =".$id_art." OR id_art_3=".$id_art.") )
 
OR
 (a.id_art = t.id_art_1 AND t.id_art_1 IN  (SELECT id_art_1 FROM trio WHERE id_art_2 =".$id_art." OR id_art_3=".$id_art." ) ) 

OR 

 (a.id_art = t.id_art_3 AND t.id_art_3 IN  (SELECT id_art_3 FROM trio WHERE id_art_2 =".$id_art." OR id_art_1=".$id_art." ) ) 

 ORDER BY a.nom_art ASC

");
Je souhaite pour cette première requête retourner les 2 autres artistes associés à un trio d'artistes en fonction de l'id de l'artiste en cours.

$getDuo_archive = mkquery("
SELECT d.nom_duo, d.id_art_1, a.nom_art, a.prenom_art FROM duo AS d, artiste AS a WHERE

(a.id_art = d.id_art_2 AND d.id_art_2 IN (SELECT id_art_2 FROM duo WHERE id_art_1 =".$id_art.") ) 
OR 

(a.id_art = d.id_art_1 AND d.id_art_1 IN  (SELECT id_art_1 FROM duo WHERE id_art_2 =".$id_art.") )

GROUP BY a.id_art ORDER BY a.nom_art ASC

");
Pareil que la précédente, mais pour un duo.

J'ai lu aussi qu'il était possible de contourner le problème des sous-requêtes via des jointures externes, mais comment faire dans mon cas :?:

STRUCTURE DE MES TABLES duo et trio :

Duo(id_art_1, id_art_2, nom_duo)

Trio(id_art_1, id_art_2, id_art_3, nom_trio)

:arrow: HELP ME PLiZ