簡體   English   中英

根據另一列中的另外兩個值選擇列的值

[英]select columns' values based on another two values from another column

我有此數據集,我需要根據列值提取多個列值。

為了詳細說明就可以了,我有一個rental表, inventory表, customer表,我想涉及customer表, rental由表customer_id並涉及rental表, inventory由表inventory_id ,最終的目的是產生first_namelast_name客戶指定的customer_id

通過

SELECT * 
FROM (
     SELECT 
     inventory.inventory_id,inventory.store_id,
     rental.customer_id,customer.first_name,customer.last_name
     FROM inventory
     INNER JOIN rental ON inventory.inventory_id=rental.inventory_id
     INNER JOIN customer ON rental.customer_id=customer.customer_id
     WHERE inventory.film_id='25') AS data
;

我已經達到了

inventory_id | store_id | customer_id | first_name | last_name 
--------------+----------+-------------+------------+-----------
          124 |        1 |         265 | Jennie     | Terry
          124 |        1 |         497 | Gilbert    | Sledge
          124 |        1 |         158 | Veronica   | Stone
          125 |        1 |         377 | Howard     | Fortner
          125 |        1 |         163 | Cathy      | Spencer
          125 |        1 |         141 | Debbie     | Reyes
          125 |        1 |         558 | Jimmie     | Eggleston
          126 |        1 |         327 | Larry      | Thrasher
          126 |        1 |         147 | Joanne     | Robertson
          126 |        1 |         225 | Arlene     | Harvey
          126 |        1 |         393 | Philip     | Causey
          126 |        1 |         425 | Francis    | Sikes
          127 |        1 |         336 | Joshua     | Mark
          127 |        1 |         350 | Juan       | Fraley
          128 |        2 |          96 | Diana      | Alexander
          128 |        2 |         273 | Priscilla  | Lowe
          128 |        2 |         163 | Cathy      | Spencer
          129 |        2 |         498 | Gene       | Sanborn
          129 |        2 |         360 | Ralph      | Madrigal
          129 |        2 |         292 | Misty      | Lambert
          129 |        2 |         578 | Willard    | Lumpkin
          129 |        2 |          53 | Heather    | Morris

但是,我想進一步采取措施以獲得下表

 inventory_id | store_id | customer_id | first_name | last_name 
--------------+----------+-------------+------------+-----------
          124 |        1 |         265 | Jennie     | Terry
          126 |        2 |         265 | Jennie     | Terry
          125 |        1 |         163 | Cathy      | Spencer
          128 |        2 |         163 | Cathy      | Spencer

通過檢查store_id='1'store_id='2'customer_id的出現來獲取列值customer_idfirst_namelast_name 我知道我需要做COUNT (DISTINCT customer_id)但我不知道如何申請才能實現。 任何幫助將不勝感激!

您在尋找兩家商店的顧客嗎? exists一種方法:

with t as (
      SELECT i.inventory_id, i.store_id,
             r.customer_id, c.first_name, c.last_name
      FROM inventory i JOIN
           rental r
           ON i.inventory_id = r.inventory_id JOIN
           customer c
           ON r.customer_id = c.customer_id
      WHERE i.film_id = 25
     )
select t.*
from t
where t.store_id in ( 1, 2) and
      exists (select 1
              from t t2
              where t2.customer_id = t.customer_id and
                    t2.store_id in (1, 2) and
                    t2.store_id <> t.store_id
             );

但是,如果只希望在兩個商店都購買過的客戶,則可以使用以下簡單查詢:

SELECT r.customer_id, c.first_name, c.last_name
FROM inventory i JOIN
     rental r
     ON i.inventory_id = r.inventory_id JOIN
     customer c
     ON r.customer_id = c.customer_id
WHERE i.film_id = 25 AND
      r.store_id in (1, 2)
GROUP BY r.customer_id, c.first_name, c.last_name
HAVING COUNT(DISTINCT r.store_id) = 2;

您可以在下面嘗試-

SELECT 
     inventory.inventory_id,inventory.store_id,
     rental.customer_id,customer.first_name,customer.last_name
     FROM inventory
     INNER JOIN rental ON inventory.inventory_id=rental.inventory_id
     INNER JOIN customer ON rental.customer_id=customer.customer_id
     WHERE inventory.film_id='25' and inventory.store_id in (1,2)
     group by nventory.inventory_id,inventory.store_id,
     rental.customer_id,customer.first_name,customer.last_name
     having count(distinct inventory.store_id)=2

暫無
暫無

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

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