2011-12-05 103 views
1

我是新的SQL,我在我的數據庫3個表:它爲什麼不起作用?一個簡單的SQL查詢

  • 一位叫notifications
  • 其他notifications_log
  • ,第三個是control

兩個notificationnotification_lognotification_id與PK-FK關係。

notifications中還有另一列名爲control_id的列,我在control表中也有這一列。

現在我想做的是通過連接notification表和control表與他們control_id場下得到notification_log表的description列行。你能幫助我嗎?

這裏的東西我已經試過:

select c.control_name 
    from notifications note, notifications_log note_log, control c 
where note_log.ALARM_ID = note.ALARM_ID 
    and note.CONTROL_ID = C.CONTROL_ID 
    order by control_name desc 
+3

究竟是什麼不起作用?是否有錯誤或者它沒有提供正確的數據? – splattne

+0

@ user1081078,您提供的查詢會在ALARM_ID上加入通知和notification_log,但您的問題表明它們應該在notification_id上加入。哪個是對的? –

回答

2

使用JOIN:

SELECT c.control_name, note_log.description FROM notifications note 
INNER JOIN notifications_log note_log 
    ON note.notification_id = note_log.notification_id 
INNER JOIN control c 
    ON note.control_id = c.control_id 
ORDER BY c.control_name DESC 

你要了解什麼是如果控制表中的每個記錄在其他表相應的記錄,否則將不會用INNER JOIN顯示。

+0

謝謝Marco,但這沒有回報我。我檢查了表格,並且有所有相關的行。爲什麼它不起作用? – user1081078

+0

@ user1081078:你可以編輯你的問題,向我們展示你的三張表中的一些(相關和非)記錄嗎? – Marco

+0

@ user1081078:你解決了你的問題嗎? – Marco

0

從notification_log其中notification_id中(從通知選擇notification_id)

,如果你想只說明選擇說明..

希望它能幫助:d

0

從你的描述,聽起來好像你在查詢中選擇了錯誤的字段。請嘗試:

select distinct note_log.description 
    from notifications note, notifications_log note_log, control c 
where note_log.notification_id = note.notification_id 
    and note.CONTROL_ID = C.CONTROL_ID 
order by 1 
相關問題