2012-09-17 128 views
2

我有兩個表DETAILS和BANLIST。我搜索DETAILS表以獲取IP清單:從兩個表中選擇sql

select ip, time, othecol from details WHERE somefield=X 

因此我得到零或N條記錄。 在同一時間,我需要知道是否返回的IP被禁止或不。我可以這樣檢查:

select isbanned from banlist WHERE ip=someIP 

是否可以將兩個語句合併爲一個?

以獲取格式列表: ip,time,othercol,isbanned |

回答

2

您可以使用JOIN

SELECT d.ip, d.time, d.othercol, b.isbanned FROM details d 
LEFT JOIN banlist b on b.ip = d.ip 
WHERE d.somefield=X 

注意,b.isbannednull的行中details那些在banlist沒有匹配的IP。您可以coalesce該值成假(語法此變化的基礎上的關係數據庫管理系統你使用的是什麼。)

0

查看用於SQL的INNER JOIN keyword

SELECT column_name(s) 
FROM table_name1 
INNER JOIN table_name2 
ON table_name1.column_name=table_name2.column_name 
1

我認爲你正在試圖做一個簡單連接

SELECT d.ip, b.isbanned 
FROM details d 
LEFT JOIN banlist b ON d.ip = b.ip 
WHERE foo=bar