[英]MySQL select query from multiple identical tables and determine the table in the result
[英]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.