2012-03-15 70 views
0

我想你可以我是一個老屁,但一直是我做了mySQL(不是我自己的專家),我敢肯定有更好的方法來寫這個。希望你能幫助我。mySQL - 正確的方法來做到這一點?

SELECT 
    (SELECT MIN(bank_id) FROM bank) AS MinBank, 
    (SELECT MAX(bank_id) FROM bank) AS MaxBank, 
    (SELECT bank_id FROM bank WHERE bank_id = $UserID) AS OldBankID, 
    (SELECT bank_name FROM bank WHERE bank_id = OldBankID) AS OldBankName, 
    (SELECT bank_interest FROM bank WHERE bank_id = OldBankID) AS OldBankInterest, 
    (SELECT bank_fees FROM bank WHERE bank_id = OldBankID) AS OldBankFees, 
    (SELECT bank_pic_url FROM bank WHERE bank_id = OldBankID) AS BankPic 
    (SELECT bank_id FROM bank HAVING bank_id > (SELECT bank_id FROM users WHERE uid = $UserID) LIMIT 1) AS NewBankID, 
    (SELECT bank_name FROM bank WHERE bank_id = NewBankID) AS NewBankName, 
    (SELECT bank_interest FROM bank WHERE bank_id = NewBankID) AS NewBankInterest, 
    (SELECT bank_fees FROM bank WHERE bank_id = NewBankID) AS NewBankFees, 
    (SELECT bank_cost FROM bank WHERE bank_id = NewBankID) AS NewBankCost, 
FROM dwrel_bank LIMIT 1 

基本上它是2個表: (用戶)表1 - 檢索Bank_ID(客戶的舊ID) (銀行)表2 - 獲取他們的老銀行信息和檢索他們的下一個 「升級」 的可用性。

它確實給我提供了我想要的信息,但是想知道我是否可以通過某種方式改善這種情況。

謝謝!

+0

它的混亂,在一個地方,你變老從銀行表'銀行ID在另一個你從'用戶表' – 2012-03-15 05:08:09

+0

基本上這:從用戶的表中獲取Bank_ID。 然後使用此bank_id並從銀行表中獲取信息。然而,從銀行表格中,我想要從同一張銀行表中獲得2個「重複」信息:他們當前的銀行信息和他們的下一個潛在的「升級」。 – sgkdnay 2012-03-15 05:11:43

回答

0

可以更改基於oldBankId第一部分如下

select bank_id OldBankId ,bank_name OldBankName, bank_interest OldBankInterest , 
bank_fees OldBankFees, bank_pic_url as BankPic from bank 
where bank_Id =(select bank_id from bank where bank_id= $user_id) 

你與newBank ID來加入這個並使用相同的語法如上

+0

當你說join時,你的意思是UNION還是LEFT JOIN?不太確定。 – sgkdnay 2012-03-15 05:39:09

+0

在id =(從表中選擇ID,其中id> $ userId限制爲1)' – 2012-03-15 05:44:32

+0

希望你能夠表現出自己的方式,我有點失落嘗試它自己哈哈,在此先感謝:) – sgkdnay 2012-03-15 06:46:45