MySQL problème de requete LEFT JOIN

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

MySQL problème de requete LEFT JOIN

Message le Mer Avr 13, 2005 14:22

Salut,

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

Code: Tout sélectionner
    $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


olivieri
WRInaute impliqué
WRInaute impliqué
 
Messages: 889
Inscription: 3 Fév 2003

Message le Mer Avr 13, 2005 14:25

essaye en mettant le where avant le left join, sur la 1ere requete

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Message le Mer Avr 13, 2005 14:29

J'ai tout essayé mais marche pas


olivieri
WRInaute impliqué
WRInaute impliqué
 
Messages: 889
Inscription: 3 Fév 2003

Message le Mer Avr 13, 2005 14:34

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'

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Message le Mer Avr 13, 2005 14:35

Oula lol, je crois que c'est bien une connerie LOL :p


tom_pascal
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 291
Inscription: 17 Nov 2003

Message le Mer Avr 13, 2005 14:36

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: Tout sélectionner
$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..) :)


tom_pascal
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 291
Inscription: 17 Nov 2003

Message le Mer Avr 13, 2005 14:38

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 ?

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Message le Mer Avr 13, 2005 14:39

Code: Tout sélectionner
#
# 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 :/


Blini
WRInaute impliqué
WRInaute impliqué
 
Messages: 506
Inscription: 29 Nov 2004

Message le Mer Avr 13, 2005 14:41

C'est mes lunettes, ou tu as des quotes simples dans ton where autour de status.email (au lieu de backquotes) ?

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Message le Mer Avr 13, 2005 14:42

Blini a écrit:C'est mes lunettes, ou tu as des quotes simples dans ton where autour de status.email (au lieu de backquotes) ?


C'est status.active qui déconne :lol:


Blini
WRInaute impliqué
WRInaute impliqué
 
Messages: 506
Inscription: 29 Nov 2004

Message le Mer Avr 13, 2005 14:44

Me suis mal exprimé: tu peux pas écrire:
Code: Tout sélectionner
ON membres.email='status.email'

mais:
Code: Tout sélectionner
ON membres.email=status.email

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Message le Mer Avr 13, 2005 14:45

Ah bon ? j'ai toujours fait comme ça pourtant, ça change quoi ?


Blini
WRInaute impliqué
WRInaute impliqué
 
Messages: 506
Inscription: 29 Nov 2004

Message le Mer Avr 13, 2005 14:47

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.

XoSt
WRInaute passionné
WRInaute passionné
 
Messages: 2114
Inscription: 6 Oct 2003

Message le Mer Avr 13, 2005 14:48

Merci mille fois Bline! i love you! ça marche!


Blini
WRInaute impliqué
WRInaute impliqué
 
Messages: 506
Inscription: 29 Nov 2004

Message le Mer Avr 13, 2005 14:49

moins fort, y'a ma femme pas loin ;)

MySQL problème de requete LEFT JOIN

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité