MySQL problème de requete LEFT JOIN

WRInaute passionné
Salut,

J'ai un petit problème avec ma requete suivante :

Code:
    $sql->query("SELECT membres.login, membres.email, membres.passe FROM `membres` LEFT JOIN `status` ON membres.email='status.email' WHERE status.active='1'");

Le WHERE n'est pas prit en compte, la requete fonctionne sans WHERE... mais j'ai besoin du WHERE, une idée ? :oops:

Merci.


Comment
Impossible WHERE noticed after reading const tables
 
WRInaute impliqué
Je vais peut dire une conner*e, mais en essayant comme ca:

SELECT membres.login, membres.email, membres.passe FROM `membres`, `status` WHERE membres.email=status.email AND status.active='1'
 
WRInaute discret
Bonjour,

Pourquoi dois tu utiliser un LEFT JOIN ?

L'intérêt serait de renvoyer des tuples virtuels de la tables status où tous les champs seraient à null, mais vu que tu veux explicitement status.active='1', je crois qu'une simple jointure ferait l'affaire ?
Code:
$sql->query("SELECT membres.login, membres.email, membres.passe FROM `membres`,`status` WHERE membres.email='status.email' AND status.active='1'");

A moins que je n'ai pas bien saisi ce que tu voulais faire... (ce n'est pas toujours évident sans avoir le contexte, les contraintes que tu rencontres, etc..) :)
 
WRInaute discret
Ah ? j'avais pas vu les messages précédents au moment de poster... C'est pas grave alors j'aurais été le 2eme à dire une c...
Mais pourquoi c'en est une ?
 
WRInaute passionné
Code:
#
# Structure de la table `membres`
#

CREATE TABLE membres (
  id smallint(6) NOT NULL auto_increment,
  login varchar(15) NOT NULL default '',
  pseudo varchar(30) NOT NULL default '',
  email varchar(100) NOT NULL default '',
  passe varchar(32) NOT NULL default '',
  newpasse varchar(32) NOT NULL default '',
  msn varchar(100) NOT NULL default '',
  avatar varchar(255) NOT NULL default '',
  siteweb varchar(50) NOT NULL default '',
  signature tinytext NOT NULL,
  datenaissance varchar(10) NOT NULL default '',
  datevisite bigint(20) NOT NULL default '0',
  dateinscription bigint(20) NOT NULL default '0',
  dateactivation bigint(20) NOT NULL default '0',
  datederlect bigint(20) NOT NULL default '0',
  sessid varchar(50) NOT NULL default '',
  ville varchar(100) NOT NULL default '',
  aim varchar(100) NOT NULL default '',
  yim varchar(100) NOT NULL default '',
  icq varchar(100) NOT NULL default '',
  nbvues int(9) NOT NULL default '0',
  KEY id (id)
) TYPE=MyISAM;

#
# Contenu de la table `membres`
#

INSERT INTO membres VALUES (1, 'login', '', 'mail', 'b89f7a5ff3e3a225d572dac38b2a67f7', '', '', '', '', '', '', 0, 0, 0, 0, '', '', '', '', '', 0);
# --------------------------------------------------------

#
# Structure de la table `status`
#

CREATE TABLE status (
  id smallint(6) NOT NULL auto_increment,
  email varchar(100) NOT NULL default '',
  membre enum('1','2') NOT NULL default '1',
  admin_commentaires enum('0','1') NOT NULL default '0',
  admin_news enum('0','1') NOT NULL default '0',
  admin_uploads enum('0','1') NOT NULL default '0',
  admin_dossiers enum('0','1') NOT NULL default '0',
  admin_total enum('0','1') NOT NULL default '0',
  active enum('0','1') NOT NULL default '0',
  banni enum('0','1') NOT NULL default '0',
  KEY id (id)
) TYPE=MyISAM;

#
# Contenu de la table `status`
#

INSERT INTO status VALUES (1, 'mail', '1', '0', '0', '0', '0', '0', '1', '0');

Voici les tables

Je souhaite avoir :

login, email, passe where active = 1


Ton code s'execute mais aucun résultat dans ma table :/
 
WRInaute occasionnel
C'est mes lunettes, ou tu as des quotes simples dans ton where autour de status.email (au lieu de backquotes) ?
 
WRInaute occasionnel
Me suis mal exprimé: tu peux pas écrire:
Code:
ON membres.email='status.email'
mais:
Code:
ON membres.email=status.email
 
WRInaute occasionnel
Ben ça change que là, c'est une condition constante, avec le champ email = la chaîne "status.email", et pas comme tu l'espères une jointure entre deux champs.
 
Discussions similaires
Haut