Page 1 sur 1
Transformer une requête imbriquée
Posté : 30 juin 2007, 21:03
par cans
Bonjour,
Je voudrais transformer cette requête qui marche en local sous easy php mais qui ne fonctionne pas sur le serveur à cause du DISTINCT, j'ai essayé de la faire avec une jointure mais j'y suis pas arrivé.
Code : Tout sélectionner
SELECT
p.id,
p.nom_".$_SESSION['langue'].",
p.image1,
p.prix
FROM peel_produits p,
peel_commandes_articles ca
WHERE p.id = ca.produit_id
AND ca.commande_id IN (SELECT DISTINCT
commande_id FROM peel_commandes_articles
WHERE produit_id= '".$prod['id']."')
AND p.id NOT LIKE '".$prod['id']."'
LIMIT 2 ;")
or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.<p>' . MYSQL_ERROR());
Merci d'avance a ceux qui pourront m'aider
Posté : 30 juin 2007, 21:08
par Sékiltoyai
DISTINCT est supproté par à peu près toutes les versions de MySQL, ce sont les sous requètes qui ne sont supportées que par les versions récentes. Tu as quelle version sur ton hébergement web ?
Posté : 30 juin 2007, 21:59
par Hubert Roksor
Rappel pratique - n'oubliez pas de :
- suivre ces quelques conseils de débogage
- préciser quel SGBD vous utilisez ainsi que sa version
- poster le schéma des tables pertinentes à votre requête sous la forme d'une instruction "CREATE TABLE" (vous pouvez retirer les colonnes qui ne sont pas utilisées dans les requêtes problématiques)
- si nécessaire, poster un échantillon des données
Posté : 01 juil. 2007, 10:21
par cans
DISTINCT est supproté par à peu près toutes les versions de MySQL, ce sont les sous requètes qui ne sont supportées que par les versions récentes. Tu as quelle version sur ton hébergement web ?
J'ai la version MySQL4 celle qui ne supporte pas les requêtes imbriquées
Posté : 01 juil. 2007, 14:36
par Sékiltoyai
Donne nous alors les shémas de tes tables...
Posté : 01 juil. 2007, 16:55
par cans
Je vous donne le schéma des tables :
Table "peel_produits"
Code : Tout sélectionner
CREATE TABLE `peel_produits` (
`id` int(11) NOT NULL auto_increment,
`alpha` char(1) binary NOT NULL default '',
`reference` varchar(100) NOT NULL default '',
`nom_fr` varchar(255) NOT NULL default '',
`descriptif_fr` text NOT NULL,
`description_fr` text NOT NULL,
`nom_en` varchar(255) binary NOT NULL default '',
`descriptif_en` text NOT NULL,
`description_en` text NOT NULL,
`image1` varchar(255) binary NOT NULL default '',
`image2` varchar(255) binary default NULL,
`image3` varchar(255) binary default NULL,
`image4` varchar(255) binary NOT NULL default '0',
`prix` float(10,2) NOT NULL default '0.00',
`prix_revendeur` float(10,2) NOT NULL default '0.00',
`poids` float(10,2) NOT NULL default '0.00',
`points` int(11) NOT NULL default '0',
`date_insere` date NOT NULL default '0000-00-00',
`date_maj` date NOT NULL default '0000-00-00',
`promotion` float(5,2) NOT NULL default '0.00',
`tva` float(5,2) NOT NULL default '0.00',
`etat` int(1) NOT NULL default '0',
`on_stock` tinyint(4) NOT NULL default '0',
`delai_stock` varchar(100) binary NOT NULL default '',
`seuil_stock` int(11) NOT NULL default '0',
`affiche_stock` tinyint(4) NOT NULL default '0',
`on_promo` tinyint(4) NOT NULL default '0',
`on_new` tinyint(4) NOT NULL default '0',
`on_rollover` tinyint(4) NOT NULL default '0',
`on_special` tinyint(4) NOT NULL default '0',
`on_perso` tinyint(4) NOT NULL default '0',
`on_top` tinyint(4) NOT NULL default '0',
`comments` tinyint(4) NOT NULL default '0',
`position` int(3) NOT NULL default '0',
`meta_titre` text NOT NULL,
`meta_desc` text NOT NULL,
`meta_key` text NOT NULL,
`on_flash` tinyint(4) NOT NULL default '0',
`flash_start` datetime NOT NULL default '0000-00-00 00:00:00',
`flash_end` datetime NOT NULL default '0000-00-00 00:00:00',
`marque` varchar(255) binary NOT NULL default '',
`reference_fournisseur` varchar(100) binary NOT NULL default '',
`cost_guides` float(13,2) NOT NULL default '0.00',
`etat_stock` tinyint(4) NOT NULL default '0',
`lang` char(2) binary default NULL,
`prix_promo` float(5,2) default NULL,
`paiement` varchar(255) binary default NULL,
`type_prix` varchar(255) binary default NULL,
`nom_de` varchar(255) binary NOT NULL default '',
`descriptif_de` text NOT NULL,
`description_de` text NOT NULL,
`nom_es` varchar(255) binary NOT NULL default '',
`descriptif_es` text NOT NULL,
`description_es` text NOT NULL,
`on_check` tinyint(4) NOT NULL default '0',
`mp3` varchar(64) NOT NULL default '',
`pdf` varchar(25) NOT NULL default '',
`id_ecotaxe` int(11) NOT NULL default '0',
`extrait` varchar(64) NOT NULL default '',
`on_download` tinyint(4) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `marque` (`marque`)
) TYPE=MyISAM AUTO_INCREMENT=19 ;
Table "peel_commandes_articles"
Code : Tout sélectionner
CREATE TABLE `peel_commandes_articles` (
`commande_id` int(11) NOT NULL default '0',
`produit_id` int(11) NOT NULL default '0',
`nom_produit` varchar(255) binary NOT NULL default '',
`prix` float(10,2) NOT NULL default '0.00',
`prix_ht` float(10,2) NOT NULL default '0.00',
`prix_cat` float(10,2) NOT NULL default '0.00',
`prix_cat_ht` float(10,2) NOT NULL default '0.00',
`total_prix` float(13,2) NOT NULL default '0.00',
`total_prix_ht` float(13,2) NOT NULL default '0.00',
`quantite` int(11) NOT NULL default '0',
`promotion` float(5,2) NOT NULL default '0.00',
`remise_produit` float(5,2) NOT NULL default '0.00',
`tva` float(5,2) NOT NULL default '0.00',
`tva_percent` float(5,2) NOT NULL default '0.00',
`couleur` varchar(150) binary NOT NULL default '',
`taille` varchar(150) binary NOT NULL default '',
`comment` varchar(255) binary NOT NULL default '',
`delivery_stock` varchar(100) binary NOT NULL default '',
`order_stock` int(11) NOT NULL default '0',
`option_prix` int(11) NOT NULL default '0',
`dispo` int(1) NOT NULL default '0',
`points` int(11) NOT NULL default '0',
`poids` float(10,2) NOT NULL default '0.00',
`email_check` varchar(255) NOT NULL default '',
`on_download` tinyint(4) NOT NULL default '0',
`statut_envoi` varchar(255) NOT NULL default '',
`nb_envoi` int(11) NOT NULL default '0',
`nb_download` int(11) NOT NULL default '0',
`date_download` datetime NOT NULL default '0000-00-00 00:00:00',
KEY `commande_id` (`commande_id`),
KEY `produit_id` (`produit_id`),
KEY `produit_id_2` (`produit_id`)
) TYPE=MyISAM;
Merci pour votre aide.