Soucis avec jointure (simple Oo)

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 : Soucis avec jointure (simple Oo)

Re: Soucis avec jointure (simple Oo)

par Fre3z69 » 28 janv. 2012, 15:02

Oui, j'utilise PDO, je trouve qu'une fois que tu as assimiler son fonctionnement, c'est beaucoup plus pratique.

Merci en tout cas, ça fonctionne super bien, juste que j'arrive pas a supprimer les champs lors de la déconnexion, mais bon, ça n'est pas plus grave, je verrais ça plus tard.

Merci de ton aide

Cordialement

Re: Soucis avec jointure (simple Oo)

par moogli » 28 janv. 2012, 14:18

salut,

la clause join doit ce situer juste parès le from donc la ta requete n'est pas syntaxiquement correcte !
Pourquoi left ?
SELECT t_users.users_id, t_users.rank_id, t_rank.rank_id, t_rank.rank_libelle
FROM t_users 
LEFT JOIN t_rank ON t_rank.rank_id = t_users.rank_id
WHERE t_users.users_id = :users_id
tu peux simplifier la requete
SELECT t_users.users_id, t_users.rank_id, t_rank.rank_id, t_rank.rank_libelle
FROM t_users 
JOIN t_rank using(rank_id)
WHERE t_users.users_id = :users_id
Pourquoi une requête préparée ? (je suppose l'utilisation de pdo derrière ?).

@+

Soucis avec jointure (simple Oo)

par Fre3z69 » 28 janv. 2012, 09:55

Bonjours à tous

Voici mon soucis.

Je souhaite récupérer le rang d'un utilisateur donné.

La table des rangs est une table liée avec celle des utilisateurs par l'id.

Voici la structure des tables.

La table t_users
CREATE TABLE IF NOT EXISTS `t_users` (
  `users_id` int(11) NOT NULL AUTO_INCREMENT,
  `rank_id` int(10) NOT NULL DEFAULT '3',
  `users_name` varchar(45) NOT NULL,
  `users_pass` varchar(45) NOT NULL,
  `users_mail` varchar(45) NOT NULL,
  `users_web` varchar(45) NOT NULL,
  `users_avatar` varchar(45) NOT NULL,
  `users_signature` varchar(45) NOT NULL,
  `users_inscription` int(11) NOT NULL,
  `users_last_visit` int(11) NOT NULL,
  `users_nb_post` int(11) NOT NULL,
  `users_verif` enum('0','1') NOT NULL DEFAULT '0',
  `users_code` text NOT NULL,
  PRIMARY KEY (`users_id`),
  KEY `fk_t_rank1` (`rank_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
La table t_rank
CREATE TABLE IF NOT EXISTS `t_rank` (
  `rank_id` int(10) NOT NULL AUTO_INCREMENT,
  `rank_libelle` varchar(64) NOT NULL,
  PRIMARY KEY (`rank_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
Bref, ce n'est pas cela le soucis.

Je bloque sur ma requête permettant de récupérer le groupe d'un utilisateur donnée (soit pour ce cas, celui connecté)

Voici ma requête:
SELECT t_users.users_id, t_users.rank_id, t_rank.rank_id, t_rank.rank_libelle
FROM t_users 
WHERE t_users.users_id = :users_id
LEFT JOIN t_rank ON t_rank.rank_id = t_users.rank_id
Pourriez vous me dire svp comment faire, j'avoue que ça doit pas être bien compliquer, mais là je bloque, parce qu'il me faut que les rang de l'utilisateur connecté, et pas ceux de tous.

Merci de votre aide

Cordialement