基于层次标准的SQL连接
我有三个表,我需要将它们连接起来形成第三个表 第一个基本表如下所示:基于层次标准的SQL连接,sql,join,Sql,Join,我有三个表,我需要将它们连接起来形成第三个表 第一个基本表如下所示: +----------+----------+---------+------------+ | Order No | Supplier | Product | Date | +----------+----------+---------+------------+ | 100 | SuppCo | Shirt | 25.09.2014 | | 101 | SuppCo | Pan
+----------+----------+---------+------------+
| Order No | Supplier | Product | Date |
+----------+----------+---------+------------+
| 100 | SuppCo | Shirt | 25.09.2014 |
| 101 | SuppCo | Pants | 25.09.2014 |
| 102 | SuppCo | Shirt | 25.09.2014 |
+----------+----------+---------+------------+
+------+--------+
| ID | Color |
+------+--------+
| 1ABC | yellow |
| 1ABD | red |
| 1ABE | pink |
| 1ABF | orange |
| 1ABG | teal |
| 2DEG | green |
| 3HIK | blue |
+------+--------+
+------+----------+-----------+
| ID | Order No | Order Ext |
+------+----------+-----------+
| 1ABC | 100 | - |
| 1ABD | 100 | Prime |
| 1ABE | 100 | Basic1 |
| 1ABF | 100 | Basic2 |
| 1ABG | 100 | Basic3 |
+------+----------+-----------+
+----------+------+-------+------------+
| Order No | ID | Color | Date |
+----------+------+-------+------------+
| 100 | 1ABD | red | 25.09.2014 |
| 101 | 2DEG | green | 25.09.2014 |
| 102 | 3HIK | blue | 25.09.2014 |
+----------+------+-------+------------+
第二个表颜色如下所示:
+----------+----------+---------+------------+
| Order No | Supplier | Product | Date |
+----------+----------+---------+------------+
| 100 | SuppCo | Shirt | 25.09.2014 |
| 101 | SuppCo | Pants | 25.09.2014 |
| 102 | SuppCo | Shirt | 25.09.2014 |
+----------+----------+---------+------------+
+------+--------+
| ID | Color |
+------+--------+
| 1ABC | yellow |
| 1ABD | red |
| 1ABE | pink |
| 1ABF | orange |
| 1ABG | teal |
| 2DEG | green |
| 3HIK | blue |
+------+--------+
+------+----------+-----------+
| ID | Order No | Order Ext |
+------+----------+-----------+
| 1ABC | 100 | - |
| 1ABD | 100 | Prime |
| 1ABE | 100 | Basic1 |
| 1ABF | 100 | Basic2 |
| 1ABG | 100 | Basic3 |
+------+----------+-----------+
+----------+------+-------+------------+
| Order No | ID | Color | Date |
+----------+------+-------+------------+
| 100 | 1ABD | red | 25.09.2014 |
| 101 | 2DEG | green | 25.09.2014 |
| 102 | 3HIK | blue | 25.09.2014 |
+----------+------+-------+------------+
第三个表的详细信息如下所示:
+----------+----------+---------+------------+
| Order No | Supplier | Product | Date |
+----------+----------+---------+------------+
| 100 | SuppCo | Shirt | 25.09.2014 |
| 101 | SuppCo | Pants | 25.09.2014 |
| 102 | SuppCo | Shirt | 25.09.2014 |
+----------+----------+---------+------------+
+------+--------+
| ID | Color |
+------+--------+
| 1ABC | yellow |
| 1ABD | red |
| 1ABE | pink |
| 1ABF | orange |
| 1ABG | teal |
| 2DEG | green |
| 3HIK | blue |
+------+--------+
+------+----------+-----------+
| ID | Order No | Order Ext |
+------+----------+-----------+
| 1ABC | 100 | - |
| 1ABD | 100 | Prime |
| 1ABE | 100 | Basic1 |
| 1ABF | 100 | Basic2 |
| 1ABG | 100 | Basic3 |
+------+----------+-----------+
+----------+------+-------+------------+
| Order No | ID | Color | Date |
+----------+------+-------+------------+
| 100 | 1ABD | red | 25.09.2014 |
| 101 | 2DEG | green | 25.09.2014 |
| 102 | 3HIK | blue | 25.09.2014 |
+----------+------+-------+------------+
最后一个表应该如下所示:
+----------+----------+---------+------------+
| Order No | Supplier | Product | Date |
+----------+----------+---------+------------+
| 100 | SuppCo | Shirt | 25.09.2014 |
| 101 | SuppCo | Pants | 25.09.2014 |
| 102 | SuppCo | Shirt | 25.09.2014 |
+----------+----------+---------+------------+
+------+--------+
| ID | Color |
+------+--------+
| 1ABC | yellow |
| 1ABD | red |
| 1ABE | pink |
| 1ABF | orange |
| 1ABG | teal |
| 2DEG | green |
| 3HIK | blue |
+------+--------+
+------+----------+-----------+
| ID | Order No | Order Ext |
+------+----------+-----------+
| 1ABC | 100 | - |
| 1ABD | 100 | Prime |
| 1ABE | 100 | Basic1 |
| 1ABF | 100 | Basic2 |
| 1ABG | 100 | Basic3 |
+------+----------+-----------+
+----------+------+-------+------------+
| Order No | ID | Color | Date |
+----------+------+-------+------------+
| 100 | 1ABD | red | 25.09.2014 |
| 101 | 2DEG | green | 25.09.2014 |
| 102 | 3HIK | blue | 25.09.2014 |
+----------+------+-------+------------+
该表基于基本表,其中我使用订单号和日期。
从订单号中,我想从明细表中获取ID
“基本”和“详细”之间的连接应符合以下标准:
连接相同的订单号并获取订单号Ext='Prime'的ID,如果Prime不作为扩展存在,则订单号Ext='-',如果不存在,则取其余的任何一个,此时无所谓。
在此之后,应该获取ID并从颜色表中获取正确的行
我在考虑换行,但这会消耗大量资源,所以我在想是否有更有效的方法来实现这一点?我会再添加一列详细信息,您可以在其中优先考虑具有此ID的行。 然后您可以使用此选项选择:
SELECT B.Order_No, C.ID, C.Color, B.Date
FROM [Basic] B
INNER JOIN Detail D ON B.Order_No = D.Order_No
AND D.ID = (SELECT TOP 1 D1.ID
FROM Detail D1
WHERE D1.Order_No = B.Order_No
ORDER BY D1.OrderPriority ASC)
INNER JOIN Color C ON C.ID = D.ID