2

DETAILSとBANLISTの2つのテーブルがあります。DETAILSテーブルを検索して、IPのリストを取得します。

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

その結果、ゼロまたはN個のレコードを取得します。同時に、返されたIPが禁止されているかどうかを知る必要があります。私はそれをこのようにチェックすることができます:

select isbanned from banlist WHERE ip=someIP

両方のステートメントを1つにまとめることは可能ですか?

次の形式でリストを取得するには:| ip、time、othercol、isbanned |

4

3 に答える 3

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

に一致するIPがない行にb.isbannedなります。その値をfalseに合体させることができます(この構文は、使用しているRDMSによって異なります)。nulldetailsbanlist

于 2012-09-17T16:20:41.640 に答える
1

簡単な参加をしようとしていると思います

SELECT d.ip, b.isbanned
FROM details d
LEFT JOIN banlist b  ON d.ip = b.ip
WHERE foo=bar
于 2012-09-17T16:22:26.687 に答える
0

SQLのINNERJOINキーワードを見てください。

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name
于 2012-09-17T16:18:26.317 に答える