2010-12-06 79 views
0

我跑了以下簡單的查詢,看起來像下面的例子: (簡單地說,一個訂單從1到N項和外鍵的表項ORDER_ID)Access 2007中LEFT JOIN和空

SELECT orders.*, items.* 
FROM orders 
LEFT JOIN 
items ON orders.id= items.order_id 

這說明是這樣的:

order.id item.id 
    1   34 
       22 
       90 
    2   44 
       19 
       21 
       22 

如何:

order.id item.id 
    1   34 
    1   22 
    1   90 
    2   44 
    2   19 
    2   21 
    2   22 

我要像一個輸出在Access 2007上實現這一點?

謝謝你在前進, Miloud B.

+0

1)爲什麼要這樣做? 2)什麼是邏輯,決定`item.id`的順序?它可以是任意的嗎?即可以1與「22」而不是「34」配對? – 2010-12-06 16:03:52

+0

該項目的ID根本就不重要,它只是我顯示的一個數字。我想這樣做,爲用戶提供更可讀的輸出。 Thx – CoolStraw 2010-12-06 16:06:35

回答

1

我能想到這樣做將是一個自我的唯一方法與聚合連接。它會在你的應用程序中更容易/更好地處理。

SELECT 
     IIF(i2.id = MIN(i.id), i.order_id, NULL) AS order_id, 
     i2.id AS item_id 
FROM  items i 
     INNER JOIN orders o 
     ON  o.id= i.order_id 
     LEFT JOIN items i2 
     ON  i2.order_id=i.order_id 
GROUP BY i.order_id 
ORDER BY i.order_id, 
     i2.id