2015-10-21 142 views
0

想知道是否有可能改變這段代碼的長度而不改變變量的功能,它的時間長了而且可能讓別人難以理解。如何縮短或更改此代碼?

$lch = "SELECT worth FROM credit 
    INNER JOIN rawdate ON credit.card_id=_rawdate.card_id 
    WHERE credit.card_id= 
     (SELECT card_id FROM rawdate 
     ORDER BY id DESC LIMIT 1 
     )"; 

數據庫表名是:

信用:ID,card_id的,價值

rawdate:ID,card_id的

+1

是否需要'rawdate'的內部連接?就像...你是否因爲這個連接而丟失記錄?否則,擺脫它。此外,您是否從此查詢中獲得多個記錄?如果沒有,那麼你可以切換到'SELECT ... FROM ... ORDER BY rawdate.id DESC LIMIT 1'。在不知道數據的情況下提供更多幫助是非常困難的。 – JNevill

+1

這不是一個令人困惑的查詢。它非常簡短。就像JNevill說的那樣,你可以寫出'SELECT value FROM FROM credit c',其中card_id =(通過id desc limit 1從rawdate order中選擇card_id)' – zedfoxus

+0

只需要澄清一下,它看起來像代碼說信用表包含「值「列但數據庫表格說明表示它包含一個」值「列。 –

回答

1

如果我理解問題正確,這個SQL查詢應該產生相同的結果:

select worth 
from credit 
    inner join rawdate on credit.card_id = rawdate.card_id 
order by rawdate.id desc 
limit 1 

本質上,如果您剛剛通過ID獲取第一個rawdate行並使用其相應的card_id從具有相同card_id的相應信用額度獲取值域,那麼只需按照以下順序排列連接表的結果rawdate ID並抓取第一行的值域應該會產生相同的結果。

如果您需要任何其他信息或幫助,請讓我知道。

0
SELECT worth 
FROM credit 
INNER JOIN rawdate 
ON credit.card_id= rawdate.card_id 
INNER JOIN (SELECT MAX(id) id FROM rawdate) r_max 
ON r_max.id = rawdate.id