簡體   English   中英

MySQL從多個表中選擇1個結果,從1個表中選擇具有多個值的MAX值

[英]MySQL select 1 result from multiple tables and MAX value from 1 table haveing multiple values

我一直在尋找針對此選擇問題的解決方案,但找不到它。

我需要從多個表中進行較大選擇。 不幸的是,一張表保存了多個有效值。 但是只需要最高的值。

Table 1: customer (fields:  ID | customer_id | Name) 
values: (1, 1, Customer_name)
Table 2: address  (fields:  ID | customer_id | address_id | address | order_id)
values: (1, 1, 1, Streetname_Home, null) and (2, 1, 2, Streetname_Shipping, 2)
Table 3: order    (fields:  order_id | customer_id)
values: (2, 1)

這是真實情況的簡化示例,僅用於說明問題。

問題是每個客戶的地址表可以容納2個(或更多)地址。 選擇必須從客戶表中選擇客戶的所有內容。 並且比使用地址表中最高的address_id。 以及訂單表中的所有內容。

所以我現在得到的是:

Select
customer.*, 
address.*, 
order.*
from
customer left join 
address on (customers.customers_id = address.customers_id) left join
order on (order.order_id = customer.order_id)
where order.ID = 1;

由於在此示例中有2個地址(房屋和運輸地址),因此我僅需要選擇以使用具有address_id最大值的地址。 附加到該地址的是order_id。

因此,根據需要獲取的order_id的address_id將選擇鏈接到訂單表。

任何幫助表示贊賞。

我假設address表的id字段是它的主鍵

SELECT customer.*, 
    address.*, 
    order.*
FROM customer
LEFT JOIN (SELECT customers_id, MAX(id) AS address_id
           FROM address
           GROUP BY customers_id) AS max_address
  ON customer.customers_id = max_address.customers_id
LEFT JOIN address 
  ON max_address.address_id = address.id
LEFT JOIN `order`
  ON (order.customers_id = customer.customers_id)
WHERE order.ID = 1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM