-
pb de version mySql
Salut,
Je voudrait rechercher les personnes qui ne sont pas inscrite à un event. Bref j'ai fait une requete qui marche bien en localhost sur mon PC (version 4.1.9 de MySql) et qui donne une erreur sur le serveur (version 3.23.54 de MySQl). Voici le code de la requete :
SELECT m.id_membre, m.nom, m.prenom FROM membre m WHERE m.id_membre NOT IN (SELECT c.id_membre FROM commande c, detail d where c.id_com = d.id_com and d.id_event='16')
et voici l'erreur :
You have an error in your SQL syntax near 'SELECT c.id_membre FROM commande c, detail d where c.id_com = d.id_c' at line 1
Voici le schema de mes 3 tables
CREATE TABLE `commande` (
`id_com` int(10) NOT NULL auto_increment,
`id_membre` int(20) NOT NULL default '0',
`date_com` datetime NOT NULL default '0000-00-00 00:00:00',
`total_com` float(11,2) NOT NULL default '0.00',
`societe_com` varchar(50) NOT NULL default '',
`nom_com` varchar(50) NOT NULL default '',
`prenom_com` varchar(50) NOT NULL default '',
`adresse_com` tinytext NOT NULL,
`postal_com` varchar(5) NOT NULL default '',
`ville_com` varchar(70) NOT NULL default '',
`pays_com` varchar(30) NOT NULL default '',
`tel_com` varchar(10) NOT NULL default '',
`nom_invit_1` varchar(50) NOT NULL default '',
`prenom_invit_1` varchar(50) NOT NULL default '',
`societe_invit_1` varchar(50) NOT NULL default '',
`nom_invit_2` varchar(50) NOT NULL default '',
`prenom_invit_2` varchar(50) NOT NULL default '',
`societe_invit_2` varchar(50) NOT NULL default '',
`nom_invit_3` varchar(50) NOT NULL default '',
`prenom_invit_3` varchar(50) NOT NULL default '',
`societe_invit_3` varchar(50) NOT NULL default '',
`total_paye` float(11,2) NOT NULL default '0.00',
PRIMARY KEY (`id_com`),
KEY `id_cli` (`id_membre`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=160 ;
-- --------------------------------------------------------
CREATE TABLE `detail` (
`id_det` int(20) NOT NULL auto_increment,
`id_com` int(10) NOT NULL default '0',
`id_event` int(5) NOT NULL default '0',
`quantite` int(3) NOT NULL default '0',
PRIMARY KEY (`id_det`),
KEY `id_com` (`id_com`),
KEY `id_pro` (`id_event`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=160 ;
-- --------------------------------------------------------
CREATE TABLE `membre` (
`id_membre` int(15) NOT NULL auto_increment,
`id` varchar(20) default NULL,
`civil` varchar(4) NOT NULL default '',
`nom` varchar(50) NOT NULL default '',
`prenom` varchar(50) NOT NULL default '',
`societe` varchar(50) NOT NULL default '',
`adresse` varchar(50) NOT NULL default '',
`postal` varchar(5) NOT NULL default '',
`ville` varchar(70) NOT NULL default '',
`pays` varchar(30) NOT NULL default '',
`tel` varchar(15) NOT NULL default '0',
`mail` tinytext NOT NULL,
`login` varchar(20) NOT NULL default '',
`passe` varchar(20) NOT NULL default '',
`valide` int(1) default '0',
`fax` varchar(15) NOT NULL default '',
`gsm` varchar(15) NOT NULL default '',
`adresse_priv` varchar(50) NOT NULL default '',
`postal_priv` varchar(5) NOT NULL default '',
`ville_priv` varchar(50) NOT NULL default '',
`pays_priv` varchar(30) NOT NULL default '',
`radiotypefct` varchar(15) NOT NULL default '',
`datedebact` date NOT NULL default '0000-00-00',
`fonctioncourt` varchar(50) NOT NULL default '',
`NCBFA` varchar(20) NOT NULL default '',
`titrecourt` varchar(30) NOT NULL default '',
`fonctioncomp` varchar(50) NOT NULL default '',
`titrecomp` varchar(30) NOT NULL default '',
`fonctionautre` varchar(50) NOT NULL default '',
`titreautre` varchar(30) NOT NULL default '',
`datenaiss` date NOT NULL default '0000-00-00',
`etatcivil` varchar(30) NOT NULL default '',
`etudes` varchar(70) NOT NULL default '',
`historique1` varchar(70) NOT NULL default '',
`historique2` varchar(70) NOT NULL default '',
`association1` varchar(70) NOT NULL default '',
`association2` varchar(70) NOT NULL default '',
`hobbies` varchar(70) NOT NULL default '',
`motif1` varchar(70) NOT NULL default '',
`motif2` varchar(70) NOT NULL default '',
`parrain1` varchar(70) NOT NULL default '',
`parrain2` varchar(70) NOT NULL default '',
`dateinscr` date NOT NULL default '0000-00-00',
`photo` tinytext NOT NULL,
PRIMARY KEY (`id_membre`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=133 ;
Avez vous une idée ?
Merci
Fred
-
les sous requetes ne sont pas possible en version 3.2
voir la FAQ pour trouver le paliatif
-
OK merci j'ai vu qu'il faut faire un left join mais comment faire cela quand la sous requete est sur deux tables ?
SELECT m.id_membre, m.nom, m.prenom FROM membre m WHERE m.id_membre NOT IN (SELECT c.id_membre FROM commande c, detail d where c.id_com = d.id_com and d.id_event='16')
Est il possible de faire un left joint à plus de deux tables ?
Merci
Fred