Referencer mes tables
Cbcb72.
-
funnycat Messages postés 153 Date d'inscription Statut Membre Dernière intervention -
funnycat Messages postés 153 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Comment peut on faire une requête de jointures entre 3 ces tables:
create table t_a (
a1 varchar(200) NOT NULL,
a2_info text,
primary key(a1));
CREATE TABLE t_p (
p1 varchar(200)NOT NULL,
p2 varchar(200) NOT NULL,
p3_info text,
PRIMARY KEY (p1),
FOREIGN KEY (p2)
references t_a(a1) on delete cascade);
create table t_m (
m1 varchar(200) not null,
m2 varchar(200) not null,
m3 varchar(200) not null,
m4 varchar(200) not null,
m5varchar(200) not null default '',
m6 varchar(20) not null default '',
m7 varchar(200) not null,
m8 int(30) not null default '0',
m9 varchar(200) not null,
m10 int(30) not null,
m11 varchar(200) not null,
m12 varchar(200) not null,
m13 int(30) not null default '0',
m14 int(30) not null default '0',
m15 int(30) not null default '0',
m16 varchar(200) not null,
m17 varchar(200) not null,
m18 varchar(200) not null,
m 19varchar(200) not null default 'images',
m20 date,
m21 text,
primary key(m1),
foreign key(m2)
references t_p(1) on DELETE cascade)engine=innodb;
Alors je fais la requête en Mysql:
SELECT * FROM t_m, t_p, t_a
WHERE a1=p2
AND p1=m2
AND a1="blablabla"
Les tables ne sont pas vide. La requête est exécuté avec succès mais la réponse est vide.
HELP !!!!!!
Comment peut on faire une requête de jointures entre 3 ces tables:
create table t_a (
a1 varchar(200) NOT NULL,
a2_info text,
primary key(a1));
CREATE TABLE t_p (
p1 varchar(200)NOT NULL,
p2 varchar(200) NOT NULL,
p3_info text,
PRIMARY KEY (p1),
FOREIGN KEY (p2)
references t_a(a1) on delete cascade);
create table t_m (
m1 varchar(200) not null,
m2 varchar(200) not null,
m3 varchar(200) not null,
m4 varchar(200) not null,
m5varchar(200) not null default '',
m6 varchar(20) not null default '',
m7 varchar(200) not null,
m8 int(30) not null default '0',
m9 varchar(200) not null,
m10 int(30) not null,
m11 varchar(200) not null,
m12 varchar(200) not null,
m13 int(30) not null default '0',
m14 int(30) not null default '0',
m15 int(30) not null default '0',
m16 varchar(200) not null,
m17 varchar(200) not null,
m18 varchar(200) not null,
m 19varchar(200) not null default 'images',
m20 date,
m21 text,
primary key(m1),
foreign key(m2)
references t_p(1) on DELETE cascade)engine=innodb;
Alors je fais la requête en Mysql:
SELECT * FROM t_m, t_p, t_a
WHERE a1=p2
AND p1=m2
AND a1="blablabla"
Les tables ne sont pas vide. La requête est exécuté avec succès mais la réponse est vide.
HELP !!!!!!
A voir également:
- Referencer mes tables
- Tables des matières word - Guide
- Tables ascii - Guide
- Oracle liste des tables ✓ - Forum Oracle
- Sql lister les tables ✓ - Forum Programmation
- Consultez le code source de cette page. copiez la ligne qui indique aux moteurs de recherche de ne pas référencer la page. - Forum Référencement
1 réponse
Bonjour.
En lien les tables de cette façon il n'y aura des résultats que si les conditions sont vrai.
Voici une autre façon de faire la même requête (personnellement je préfère utiliser INNER JOIN c'est plus facile à lire) :
Si vous souhaitez afficher des résultats même s'il n'y a pas de correspondance dans les tables "t_p" et "t_a", vous pouvez aussi effectuer la requête suivante :
(Cf. https://sql.sh/cours/jointures )
En espérant que ça résoudra votre problématique.
Cordialement,
En lien les tables de cette façon il n'y aura des résultats que si les conditions sont vrai.
Voici une autre façon de faire la même requête (personnellement je préfère utiliser INNER JOIN c'est plus facile à lire) :
SELECT * FROM t_m INNER JOIN t_p ON p1 = m2 INNER JOIN t_a ON a1 = p2 WHERE a1="blablabla"
Si vous souhaitez afficher des résultats même s'il n'y a pas de correspondance dans les tables "t_p" et "t_a", vous pouvez aussi effectuer la requête suivante :
SELECT * FROM t_m LEFT OUTER JOIN t_p ON p1 = m2 LEFT OUTER JOIN t_a ON a1 = p2 WHERE a1="blablabla"
(Cf. https://sql.sh/cours/jointures )
En espérant que ça résoudra votre problématique.
Cordialement,