2014-05-13 75 views
-2

你好,我有一個sql語法,它總是取最後一條記錄,並檢查其他條件。沒有在sql中選擇好值

SELECT * 
from projetstaches ,users,timesheets 
WHERE `prtTimeSheetId` = (SELECT MAX( `prtTimeSheetId`) FROM projetstaches) AND usrId = 16 AND timId = prtTimeSheetId 

我正在使用php和sql,但我知道這是我的語法不好。

它總是給我我的最後一個記錄。這是不會把我的用戶的最後一個記錄16。導致我的最後一個記錄對我的用戶7。有什麼想法爲什麼?

所以,我需要把我的用戶最後projettime板16

**編輯** 這裏是什麼樣子的我的數據http://pastebin.com/6LBwGtc3

+0

嘗試和 –

+0

,而不是它的將是最糟糕的,它會給最後一個記錄或使用隱式連接語法用戶16 – user3613856

+0

停止或。 – Kermit

回答

0

我想您的查詢應該是這樣的:

SELECT * 
from 
    projetstaches 
     inner join 
    timesheets 
     on (timesheets.timId = projetstaches.prtTimeSheetId) 
     inner join 
    users 
     on (users.usrId = timesheets.timUserId) 
WHERE 
    users.usrId = 16 
order by timesheets.timId desc 
limit 1 

要了解它是如何工作,我建議你與此查詢玩:

  1. 刪除where - 檢查結果
  2. 刪除limit - 檢查結果
+0

是的exacly那樣,但什麼是內部連接? – user3613856

+0

@ user3613856如果您想在單個查詢中使用多個表格 - 您需要以某種方式加入它們,「內部連接」意味着只有條件爲true並且行中存在行的行,請通過google瞭解更多信息,其廣泛的主題 –