requête Sql distinct

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 : requête Sql distinct

Re: requête Sql distinct

par albat » 05 août 2011, 12:01

Modération :
Afin d'obtenir plus de réponses, le sujet a été déplacé dans un forum plus approprié.

Merci de prendre le temps de lire les règlements
ainsi que l'intitulé de chaque forum avant de poster un nouveau sujet.

Re: requête Sql distinct

par miiidooo19 » 29 juil. 2011, 16:20

Produit cartésien des tables.

Fait voir les create table des table et un jeux de données que je reste a tête reposée (l'est trop tard ;) )

@+
ok pas d souci ^^
pour les deux tables
CREATE TABLE `posts` (
  `id_posts` int(11) NOT NULL AUTO_INCREMENT,
  `id_topic` int(11) NOT NULL,
  `pseudo_post` varchar(30) NOT NULL,
  `post` text NOT NULL,
  `date_post` date NOT NULL,
  `time_post` varchar(5) NOT NULL,
  PRIMARY KEY (`id_posts`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;

CREATE TABLE `topic` (
  `id_topic` int(11) NOT NULL AUTO_INCREMENT,
  `id_salone` int(11) NOT NULL,
  `pseudotopic` varchar(30) NOT NULL,
  `title` text NOT NULL,
  `contenu` text NOT NULL,
  `date` date NOT NULL,
  `time` varchar(5) NOT NULL,
  `date_mise_jour` date NOT NULL,
  `time_mise_jour` varchar(5) NOT NULL,
  PRIMARY KEY (`id_topic`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
Et pour qlq exemple voila je te donne tous le contenue de mes deux table :)
INSERT INTO `posts` (`id_posts`, `id_topic`, `pseudo_post`, `post`, `date_post`, `time_post`) VALUES
(1, 1, 'mido', 'test 1', '2011-07-24', '20:34'),
(2, 1, 'mido', 'test 2', '2011-07-24', '21:02'),
(3, 1, 'mido', 'test commentaire 3', '2011-07-24', '21:03'),
(4, 10, 'mido', 'test post', '2011-07-24', '22:20'),
(5, 11, 'mido', 'coucou exemple d''un post', '2011-07-24', '23:14'),
(6, 1, 'mido', '<p>test commentaire</p>', '2011-07-25', '10:34'),
(7, 1, 'mido', 'TEST', '2011-07-25', '17:35'),
(8, 1, 'mido', 'test commentaire 2', '2011-07-26', '00:33'),
(9, 1, 'mido', '<p><strong>exemple de r&eacute;ponse avec un &eacute;diteur</strong> </p>\r\n<p>&nbsp;</p>', '2011-07-26', '00:33'),
(10, 1, 'mido', 'test commentaire', '2011-07-26', '00:33'),
(11, 1, 'mido', 'exemple post', '2011-07-26', '00:34'),
(12, 1, 'mido', 'test exemple 10', '2011-07-26', '00:34'),
(13, 1, 'mido', 'test com', '2011-07-26', '00:34'),
(14, 8, 'mido', 'test com', '2011-07-28', '01:25'),
(15, 8, 'Nora', 'test 2', '2011-07-28', '02:11'),
(16, 1, 'M-19', 'df', '2011-07-28', '02:17'),
(17, 12, 'Nora', 'lkjlkj', '2011-07-28', '02:22');


INSERT INTO `topic` (`id_topic`, `id_salone`, `pseudotopic`, `title`, `contenu`, `date`, `time`, `date_mise_jour`, `time_mise_jour`) VALUES
(1, 1, 'Admin', 'exemple de topic 1', 'exemple de contenu de topic 1', '2011-07-21', '18:18', '2011-07-28', '02:17'),
(2, 2, 'Admin', 'exemple de topic 2', 'exemple de contenu de topic 2', '2011-07-21', '18:39', '2011-07-21', '18:47'),
(3, 3, 'Admin', 'exemple de topic 3', 'exemple de contenu de topic 3', '2011-07-21', '19:00', '2011-07-21', '19:00'),
(4, 4, 'Admin', 'exemple de topic 4', 'exemple de contenu de topic 4', '2011-07-21', '19:29', '2011-07-22', '23:23'),
(5, 5, 'Admin', 'exemple de topic 5', 'exemple de contenu de topic 5', '2011-07-21', '19:38', '2011-07-21', '19:43'),
(6, 6, 'Admin', 'exemple de topic 6', 'exemple de contenu de topic 6', '2011-07-21', '20:00', '2011-07-21', '20:01'),
(7, 7, 'Admin', 'exemple de topic 7', 'exemple de contenu de topic 7', '2011-07-21', '20:15', '2011-07-21', '20:18'),
(8, 8, 'Admin', 'exemple de topic 8', 'exemple de contenu de topic 8', '2011-07-21', '20:41', '2011-07-28', '02:11'),
(9, 8, 'Admin', 'exemple de topic 9', 'exemple de contenu de topic 9', '2011-07-21', '20:58', '2011-07-23', '17:07'),
(10, 9, 'Admin', 'exemple de topic 10', 'exemple de contenu de topic 10', '2011-07-21', '21:56', '2011-07-24', '22:20'),
(11, 9, 'mido', 'exemple de topic 11', 'exemple de contenu de topic 11', '2011-07-24', '22:52', '2011-07-24', '23:14'),
(12, 1, 'M-19', 'exemple de topic 12', 'exemple de contenu de topic 12', '2011-07-28', '02:15', '2011-07-28', '02:22');
voila d'autres tables ?

Re: requête Sql distinct

par moogli » 29 juil. 2011, 02:10

Produit cartésien des tables.

Fait voir les create table des table et un jeux de données que je reste a tête reposée (l'est trop tard ;) )

@+

Re: requête Sql distinct

par miiidooo19 » 28 juil. 2011, 01:46

oui pas faut ^^

mais en fait quand je fait la requete juste pour une table il m'affiche les résultat correcte mais quand je fait la requete avec les deux table ça affiche des résultat pas erreur mais résultat fausse

exemple j'ai un pseudo qui a commenté dans 4 sujet donc qd je fait

'SELECT COUNT(DISTINCT posts.id_topic)
FROM posts
where pseudo_post="'.$_SESSION['pseudo'].'" '

résultat c'est 4 donc c'est bon

apres ce pseudo il a créer qu'un sujet donc qd je fait

SELECT COUNT(DISTINCT topic.id_topic)
FROM topic
where pseudotopic="'.$_SESSION['pseudo'].'" '

résultat c'est : 1

juska là tt est bien mais quand je fait un mélange pour m'afficher le nombre des sujet ou ce user a commenté + le nombre des sujet qu'il a créer dans mon exemple le totale c'est 5 ( 4 sujet ou il a commenté + 1 qu'il a créer) mais résultat que ça m'affiche c'est 44 :|

voici la requête

'SELECT COUNT(DISTINCT posts.id_topic, topic.id_topic)
FROM posts,topic
where pseudo_post="'.$_SESSION['pseudo'].'"
OR pseudotopic="'.$_SESSION['pseudo'].'" '

Re: requête Sql distinct

par moogli » 28 juil. 2011, 01:36

Essai Avec phpmyadmin ;)
@+

Re: requête Sql distinct

par miiidooo19 » 28 juil. 2011, 01:22

Hum, après relecture si tu n'a besoin que du idtopic, pas besoin de jointure, il te faut préciser la table a laquelle appartient le idtopic du sélect (select distinct topic.idtopic .... Par exemple) afin de lever le doute sur. Celui que tu veux !

Pas besoin de la jointure sur l'idtopic vu que tu veux tout.
Tu sélectionne le idtopic qui ont soit le pseudo_post soit le pseudotopic.

Et ça c'est un ou et non un et ;)

@+
'SELECT DISTINCT topic.id_topic, posts.id_topic
FROM posts, topic
where pseudo_post="'.$_SESSION['pseudo'].'"
OR pseudotopic="'.$_SESSION['pseudo'].'"
ORDER By date_mise_jour DESC, time_mise_jour DESC'

c'est comme ça ? 8-|

Re: requête Sql distinct

par moogli » 28 juil. 2011, 01:17

Hum, après relecture si tu n'a besoin que du idtopic, pas besoin de jointure, il te faut préciser la table a laquelle appartient le idtopic du sélect (select distinct topic.idtopic .... Par exemple) afin de lever le doute sur. Celui que tu veux !

Pas besoin de la jointure sur l'idtopic vu que tu veux tout.
Tu sélectionne le idtopic qui ont soit le pseudo_post soit le pseudotopic.

Et ça c'est un ou et non un et ;)

@+

Re: requête Sql distinct

par miiidooo19 » 28 juil. 2011, 01:02

jointure das ma reuqête c'est bien topic.id_topic = posts.id_topic ??

'SELECT DISTINCT id_topic
FROM posts, topic
where pseudo_post="'.$_SESSION['pseudo'].'"
AND pseudotopic="'.$_SESSION['pseudo'].'"
AND topic.id_topic = posts.id_topic
ORDER By date_mise_jour DESC, time_mise_jour DESC'

Re: requête Sql distinct

par moogli » 28 juil. 2011, 00:55

Yop,
dans la condition du where c'est des ou et non des et qu'il faut mettre ;)

Il serait temps de te mettre aux jointures ;)
http://sqlpro.developpez.com/cours/sqlaz/jointures/

@+

requête Sql distinct

par miiidooo19 » 27 juil. 2011, 20:00

bonjour à tous le monde,

svp je veux créer une requête qui me permettrai d'afficher tous les sujet ou un membre a poster un commentaire ? sans répéter un sujet deux fois

Exemple :
sujet 1
10 msg dont 2 de pseudo miiidooo19 par exemple

sujet 2 pas d msg de miiidooo19

Sujet 3 un msg de miiidoo19

sujet 4 5 message de miiiidooo19

donc j'aimerai bien que le résultat de la requête sera 3 puisque miiidooo19 a posté dans 3 sujet


en gros comment dire : select tous les sujet que miiidooo19 à crée ou tous les sujet ou il a postuler un msg sans répéter le nom de sujet deux fois
**********

merci de me corriger la requête : 'SELECT DISTINCT id_topic FROM posts, topic where pseudo_post="'.$_SESSION['pseudo'].'" AND pseudotopic="'.$_SESSION['pseudo'].'" AND topic.id_topic = posts.id_topic ORDER By date_mise_jour DESC, time_mise_jour DESC');

( y a deux table posts avec les champs suivant id_posts id_topic pseudo_post post date_post time_post et table topic id_topic id_salone pseudotopic title contenu date time date_mise_jour time_mise_jour