selection avec jointure

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 : selection avec jointure

Bonjour j'ai un soucis identique..

par charlie » 30 mai 2005, 00:11

J'ai posté ma question sur ce forum : http://www.phpfrance.com/forums/voir_sujet-3703.php

Merci si vous avez une idée :?

par sadeq » 02 mai 2005, 16:20

C'est tout sauf un problème de version de MySQL, en fait notre ami(e) ne sait pas ce qu'il (elle) veut.
....je veux recuperer les sous categories pour chacune des categories principale:

je fais ca:

$sql1 = mysql_query ("SELECT cat_tbl.catid, cat_tbl.Cat, sous_cat_tbl.id, sous_cat_tbl.catid, sous_cat_tbl.Sous_Cat FROM cat_tbl, sous_cat_tbl WHERE cat_tbl.catid = sous_cat_tbl.catid order by id ASC") or die ("erreur req ".mysql_error());

....
Il faut savoir ce que tu veux. Ta requête t'affiche exactement ce que tu nous dis vouloir.
... mais ca m affiche toutes les sous categories dans toutes les categories
Ton mais m'éttone, n'est ce pas ce que tu voulais ...

A mon avis tu as mal exprimé ce que tu veux à nous at à SQL.
Car en définitif, ta requête affiche toutes les sous-catégories des catégories existantes (même si elles sont classées)

Si tu veux les sous-catégories d'une catégorie donnée il faut inclure un filtre sur l'id de la catégorie dans le WHERE

N'oubli pas que le regroupement est important et aussi les types de de tes clés de filtrage (je pense à catid qui doit être de même type dans les deux tables car c'est un lien)

par thierry » 02 mai 2005, 15:44

comme j'ai pas la bonne version de mysql ça va être dur de te filer un coup de main.

est ce que tu as la bonne version de mysql (je présume quand même que oui vu ta réponse).

sinon envoi ton code et ta requête pour que ceux qui ont la bonne version de mysql puissent faire quelquechose.

par mouna » 02 mai 2005, 15:37

ca n a aucun effet

par thierry » 02 mai 2005, 14:11

salut,

si tu as une version de mysql > 4.1 regarde du côté de la fonction group_concat :

http://dev.mysql.com/doc/mysql/fr/group ... tions.html

comme j'ai une ancienne version de mysql j'ai pas pu tester mais je pense que d'autres personnes sur le forum doivent connaitre.

thierry

par mouna » 01 mai 2005, 22:12

catid en int d'un coté et en varchar de l'autre, c'est normal ?
Bien vu pjl, j'aouve qu'elle m'avait échappé celle là ;)
je pense ke si

par Cyrano » 01 mai 2005, 20:47

catid en int d'un coté et en varchar de l'autre, c'est normal ?
Bien vu pjl, j'aouve qu'elle m'avait échappé celle là ;)

par pjl » 01 mai 2005, 20:27

catid en int d'un coté et en varchar de l'autre, c'est normal ?

par mouna » 01 mai 2005, 19:58

Rien de special

par Cyrano » 01 mai 2005, 19:52

Sais pas trop, peut-être en utilisant DISTINCT

par mouna » 01 mai 2005, 19:47

non ca n a aucun effet

par Cyrano » 01 mai 2005, 19:39

Il te manque une clause GROUP BY : je suis pas spur de moi en la matière, mais ta requête devrait ressembler à :

Code : Tout sélectionner

SELECT cat_tbl.catid, cat_tbl.Cat, sous_cat_tbl.id, sous_cat_tbl.catid, sous_cat_tbl.Sous_Cat FROM cat_tbl, sous_cat_tbl WHERE cat_tbl.catid = sous_cat_tbl.catid GROUP BY cat_tbl.catid ORDER BY cat_tbl.catid ASC

selection avec jointure

par mouna » 01 mai 2005, 19:32

bonjour

soit mes 2 tables, une pour les categories et une autre pour les sous categories:

CREATE TABLE `cat_tbl` (
`catid` int(11) NOT NULL auto_increment,
`Cat` varchar(255) NOT NULL default '',
UNIQUE KEY `catid` (`catid`)
) TYPE=MyISAM AUTO_INCREMENT=5 ;

#
# Dumping data for table `cat_tbl`
#

INSERT INTO `cat_tbl` VALUES (1, 'cat1');
INSERT INTO `cat_tbl` VALUES (2, 'cat2');
INSERT INTO `cat_tbl` VALUES (3, 'cat3');
INSERT INTO `cat_tbl` VALUES (4, 'cat4');

# --------------------------------------------------------

#
# Table structure for table `sous_cat_tbl`
#

CREATE TABLE `sous_cat_tbl` (
`id` int(11) NOT NULL auto_increment,
`catid` varchar(30) NOT NULL default '',
`Sous_Cat` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=7 ;

#
# Dumping data for table `sous_cat_tbl`
#

INSERT INTO `sous_cat_tbl` VALUES (1, '1', 'souscat1');
INSERT INTO `sous_cat_tbl` VALUES (2, '2', 'souscat2');
INSERT INTO `sous_cat_tbl` VALUES (3, '3', 'souscat3');
INSERT INTO `sous_cat_tbl` VALUES (4, '4', 'souscat4');
INSERT INTO `sous_cat_tbl` VALUES (5, '1', 'souscat11');
INSERT INTO `sous_cat_tbl` VALUES (6, '4', 'souscat41');

alor j ajoute des sous categories pour chaque categorie principale.
a la fin du compte, je veux recuperer les sous categories pour chacune des categories principale:

je fais ca:

$sql1 = mysql_query ("SELECT cat_tbl.catid, cat_tbl.Cat, sous_cat_tbl.id, sous_cat_tbl.catid, sous_cat_tbl.Sous_Cat FROM cat_tbl, sous_cat_tbl WHERE cat_tbl.catid = sous_cat_tbl.catid order by id ASC") or die ("erreur req ".mysql_error());

mais ca m affiche toutes les sous categories dans toutes les categories


merci d avance