Les données de test:
les fournisseurs
CREATE TABLE suppliers(
s_id INT NOT NULL AUTO_INCREMENT,
s_name CHAR(50) NOT NULL,
s_city CHAR(10) NULL,
s_zip CHAR(10) NULL,
s_call CHAR(50) NOT NULL,
PRIMARY KEY(s_id)
);
INSERT INTO suppliers(s_id, s_name,s_city, s_zip, s_call)
VALUES(101,'FastFruit Inc.','Tianjin','300000','48075'),
(NULL,'LT Supplies','Chongqing','400000','44333'),
(NULL,'ACME','Shanghai','200000','90046'),
(NULL,'FNK Inc.','Zhongshan','528437','11111'),
(NULL,'Good Set','Taiyuang','030000', '22222'),
(NULL,'Just Eat Ours','Beijing','010', '45678'),
(NULL,'DK Inc.','Zhengzhou','450000', '33332');
des fruits
CREATE TABLE fruits
(
f_id char(10) NOT NULL,
s_id INT NOT NULL,
f_name char(255) NOT NULL,
f_price decimal(8,2) NOT NULL,
PRIMARY KEY(f_id)
);
INSERT INTO fruits (f_id, s_id, f_name, f_price)
VALUES('a1', 101,'apple',5.2),
('b1',101,'blackberry', 10.2),
('bs1',102,'orange', 11.2),
('bs2',105,'melon',8.2),
('t1',102,'banana', 10.3),
('t2',102,'grape', 5.3),
('o2',103,'coconut', 9.2),
('c0',101,'cherry', 3.2),
('a2',103, 'apricot',2.2),
('l2',104,'lemon', 6.4),
('b2',104,'berry', 7.6),
('m1',106,'mango', 15.6),
('m2',105,'xbabay', 2.6),
('t4',107,'xbababa', 3.6),
('m3',105,'xxtt', 11.6),
('b5',107,'xxxx', 3.6);
Tableau Structure:
Fruit
f_id s_id f_name f_price
------ ------ ---------- ---------
a1 101 apple 5.20
a2 103 apricot 2.20
b1 101 blackberry 10.20
b2 104 berry 7.60
b5 107 xxxx 3.60
bs1 102 orange 11.20
bs2 105 melon 8.20
c0 101 cherry 3.20
l2 104 lemon 6.40
m1 106 mango 15.60
m2 105 xbabay 2.60
m3 105 xxtt 11.60
o2 103 coconut 9.20
t1 102 banana 10.30
t2 102 grape 5.30
t4 107 xbababa 3.60
Fournisseurs
s_id s_name s_city s_zip s_call
------ -------------- --------- ------ --------
101 FastFruit Inc. Tianjin 300000 48075
102 LT Supplies Chongqing 400000 44333
103 ACME Shanghai 200000 90046
104 FNK Inc. Zhongshan 528437 11111
105 Good Set Taiyuang 030000 22222
106 Just Eat Ours Beijing 010 45678
107 DK Inc. Zhengzhou 450000 33332
- Jointure interne requête
SELECT suppliers.`s_id`,s_name,f_name,f_price
FROM fruits,suppliers
WHERE fruits.`s_id`=suppliers.`s_id`;
Tableau comme les fruits et les fournisseurs Tableau S_ID ont le même domaine, donc quand la comparaison, les besoins de table pour nom complet (le format « nom de la table, le nom de la colonne »), est donnée que si le S_ID, MySQL ne sait qui fait référence à un, et renvoie un message d'erreur.
- jointure interne
SELECT suppliers.`s_id`,s_name,f_name,f_price
FROM fruits inner join suppliers
on fruits.`s_id`=suppliers.`s_id`;
Requête alimentation F_ID = « A1 » types fournis fruits du nom du vendeur de fruits et de fruits
select f.`f_name`,s.`s_name`
from fruits as f inner join suppliers as s on f.`s_id`=s.`s_id`
where f.`s_id`=(select s_id from fruits as f where f.`f_id`='a1');
jointure interne sur XXXX XXXX XXXX
- autojointure
requête alimentation F_ID = « a1 » du type fourni par Fruit
select f.`f_name` from fruits as f , fruits as r
where f.`s_id`=r.s_id and r.f_id='a1';
Remarque: sélectionnez la sous-requête
SELECT f.`f_name`
FROM fruits AS f
WHERE f.`s_id`=(SELECT s_id FROM fruits AS f WHERE f.`f_id`='a1')