我有兩個表,即TABLE1和TABLE2 我無法理解如何根據一些條件從這兩個表中提取資訊。這是我基本上需要的:
我想根據列值從第一個TABLE1 中獲取某些行。在TABLE1 中有一個名為timecreated的列。我想僅在滿足以下條件時才顯示過去 30 天內(時間在 UNIX 時間戳中)創建的TABLE1 中的所有行:
- COLUMN1='\core\event\course_viewed' 或
- COLUMN2='\core\event\enrol_instance_created' 或
- COLUMN3='恢復'
現在TABLE2有名為的列:ID, fullname 和 shortname。我需要顯示這些以及列ID在TABLE2是相同的值作為命名列courseid在TABLE1。我想用全名和短名顯示那些行,它們對應于在TABLE1 中命名為ID 的courseid。
我嘗試了什么?我嘗試了以下但似乎不起作用
SELECT TABLE1.*, TABLE2.* FROM TABLE1, TABLE2
WHERE
(
TABLE1.COLUMN1 = '\core\event\course_viewed'
OR
TABLE1.COLUMN2 = '\core\event\enrol_instance_created'
OR
TABLE1.COLUMN3 = 'restore'
)
AND
TABLE2.COLUMN1 = TABLE1.COLUMN4
示例表 1

示例表 2
期望結果表
uj5u.com熱心網友回復:
兩項改進將使您的查詢作業。
- 搜索
\時必須將其轉義,即如果要搜索app\user,請放入app\\userwhere 子句。 - 使用
INNER JOINifcourseid總是存在于table1else 中LEFT JOIN,這消除了我們主要在 table1 上作業的想法。
話雖如此,以下應該適用于您的情況。
SELECT TABLE1.*, TABLE2.*
FROM TABLE1
INNER JOIN TABLE2 ON TABLE2.id = TABLE1.courseid
WHERE TABLE1.timecreated >= UNIX_TIMESTAMP(NOW() - INTERVAL 30 DAY)
AND (
TABLE1.COLUMN1 = '\\core\\event\\course_viewed'
OR TABLE1.COLUMN2 = '\\core\\event\\enrol_instance_created'
OR TABLE1.COLUMN3 = 'restore'
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/354054.html
上一篇:將資料合并到一個表格單元格中
