簡體   English   中英

從不同的列和兩個表中選擇數據

[英]Select data from different columns and two tables

我已經問過(並解決了) 這里附近的東西但是現在更加復雜了。 我有相同的BID表:

Id_auction        bidder_1      winner_1    bidder_2    winner_2    item
  1                Alice           1          Ben         1          cup
  2               Charles          0          Alice       1          mug
  3                 Ben            1          Charles     1          pen

但是現在我想將信息與另一個表USD合並

Id_auction         USD
1                  100
2                  150
3                   50

如果投標人是中標者,則值為1;如果不是中標人,則值為0。因此,在第一次拍賣中,愛麗絲和本是中標者,在第二次拍賣中,只有愛麗絲獲勝。 我將需要一個MySQL查詢,因此結果將如下所示:

  Id_auction       bidder        item      bidder_number   USD
  1                Alice         cup            1          100
  1                Ben           cup            2          100
  2                Alice         mug            2          150
  3                Ben           pen            1           50
  3                Charles       pen            2           50

謝謝!

只需JOIN此表USD

SELECT sub.*, USD.USD
FROM
(
  SELECT 
    t1.id_auction,
    t2.bidder_1 AS bidder,
    t2.item,
    1 AS bidder_number    
  FROM table1 t1
  INNER JOIN table1 t2  ON t1.id_auction = t2.id_auction
                       AND t2.winner_1 = 1
  UNION ALL
  SELECT 
    t1.id_auction,
    t2.bidder_2 AS bidder,
    t2.item,
    2                    
  FROM table1 t1
  INNER JOIN table1 t2  ON t1.id_auction = t2.id_auction
                       AND t2.winner_2 = 1
) AS sub
INNER JOIN USD ON sub.id_auction = USD.id_auction
ORDER BY id_auction, bidder;

更新了SQL Fiddle演示

| ID_AUCTION |  BIDDER | ITEM | BIDDER_NUMBER | USD |
-----------------------------------------------------
|          1 |   Alice |  cup |             1 | 100 |
|          1 |     Ben |  cup |             2 | 100 |
|          2 |   Alice |  mug |             2 | 150 |
|          3 |     Ben |  pen |             1 |  50 |
|          3 | Charles |  pen |             2 |  50 |
SELECT
  BID.Id_auction AS Id_auction,
  BID.bidder_1 AS bidder,
  BID.item AS item,
  USD.USD AS USD,
  1 AS bidder_number
FROM BID
INNER JOIN USD ON BID.Id_auction=USD.Id_auction
WHERE BID.winner_1=1

UNION ALL

SELECT
  BID.Id_auction AS Id_auction,
  BID.bidder_2 AS bidder,
  BID.item AS item,
  USD.USD AS USD,
  2 AS bidder_number
FROM BID
INNER JOIN USD ON BID.Id_auction=USD.Id_auction
WHERE BID.winner_2=1

ORDER BY BID.Id_auction, budder_number

暫無
暫無

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

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