Comment faire une requête spécifique dans MySQL
mysql> select * from Orders;
+------+------+------+------------+------------+
| ONO | CNO | ENO | RECEIVED | SHIPPED |
+------+------+------+------------+------------+
| 1020 | 1111 | 1000 | 1994-12-10 | 1994-12-12 |
| 1021 | 1111 | 1000 | 1995-01-12 | 1995-01-15 |
| 1022 | 2222 | 1001 | 1995-02-13 | 1995-02-20 |
| 1023 | 3333 | 1000 | 2003-02-15 | NULL |
| 1024 | 4444 | 1000 | 2003-02-15 | 2003-02-16 |
| 1025 | 5555 | 1000 | 2003-02-15 | 2003-02-16 |
+------+------+------+------------+------------+
mysql> select * from Employees;
+------+--------+-------+------------+
| ENO | ENAME | ZIP | HDATE |
+------+--------+-------+------------+
| 1000 | Jones | 67226 | 1995-12-12 |
| 1001 | Smith | 60606 | 1992-01-01 |
| 1002 | Brown | 50302 | 1994-09-01 |
| 1003 | Green | 28411 | 2002-09-01 |
| 1004 | Purple | 28411 | 2003-01-01 |
+------+--------+-------+------------+
mysql> select * from Customers;
+------+---------+------------------+-------+--------------+
| CNO | CNAME | STREET | ZIP | PHONE |
+------+---------+------------------+-------+--------------+
| 1111 | Charles | 123 Main St. | 67226 | 316-636-5555 |
| 2222 | Bertram | 237 Ash Avenue | 67226 | 316-689-5555 |
| 3333 | Barbara | 111 Inwood St. | 60606 | 316-111-1234 |
| 4444 | Will | 111 Kenwood St. | 54444 | 416-111-1234 |
| 5555 | Bill | 211 Marlwood St. | 28408 | 416-111-1235 |
| 6666 | Keely | 211 Pinewood St. | 28411 | 416-111-1235 |
| 7777 | Maera | 211 Marlwood St. | 28408 | 416-111-1235 |
+------+---------+------------------+-------+--------------+
J'ai besoin de: Obtenir cname
et ename
associer de telle sorte que le client avec le nom cname
a passé une commande par l'intermédiaire de l'employé avec le nom ename
.
Je suis sûr que cela semble facile pour la plupart, mais je n'ai pas été en mesure de comprendre cela. J'ai essayé ceci:
select distinct Customers.CNAME, Employees.ENAME
from Customers, Employees
where Customers.CNO in (
select Customers.CNO
from Customers, Orders
where Customers.CNO = Orders.CNO
) and
where Employees.ENO in (
select Employees.ENO
from Orders, Employees
where Employees.ENO = Orders.ENO
);
en plusieurs versions, mais je n'arrive pas à le faire fonctionner. C'est la première fois que je travaille en SQL, c'est donc très nouveau pour moi. J'apprécierais vraiment n'importe quelle aide.
select customers.CNAME, employees.ENAME from customers
inner join orders on customers.CNO = orders.CNO
inner join employees on orders.ENO = employees.ENO;
L'utilisation des instructions de jointure facilite la lecture du SQL que vous essayez de faire. Cela joint la table des commandes aux clients sur la valeur CNO et la table des commandes avec les employés sur la valeur ENO. Il sélectionne ensuite deux colonnes pour l'affichage.