0

MySQL に小さな問題があります。ユーザーが所有していないデータを含むテーブルのすべての行を選択したい (これは交換ツールです)。

例:

id  |  owner  |  event
----------------------
1   |    4    |    3
2   |    5    |    3
3   |    3    |    2
4   |    5    |    6

4号店主です。既に所有しているイベントを除くすべてのイベントを表示したいので、次のような結果を得たいと考えています。

event |  offered by
-------------------
2     |     3
6     |     5

これを SQL 経由で選択することは可能ですか、それともすべてのユーザー自身のイベントを選択しid、結果から同じイベントを持つ他のすべてのイベントを削除する必要がありますか?

4

3 に答える 3

7
SELECT  a.event, a.owner AS `Offered By`
FROM    tableName a
WHERE   a.event NOT IN
        (
            SELECT  b.event
            FROM    TableName b
            WHERE   owner = 4
        )

またはJOIN私がより好むものを使用することによって、

SELECT  a.event, a.owner AS `Offered By`
FROM    tableName a
        LEFT JOIN tableName b
            ON  a.event = b.event AND
                b.owner = 4
WHERE   b.event IS NULL

出力

╔═══════╦════════════╗
║ EVENT ║ OFFERED BY ║
╠═══════╬════════════╣
║     2 ║          3 ║
║     6 ║          5 ║
╚═══════╩════════════╝
于 2013-04-04T14:17:02.503 に答える
0
SELECT event, offered_by FROM events_table WHERE owner <> 4

eventsまたは、たとえば2つのテーブルの場合offers

SELECT tb1.event, tb1.offered by FROM offers as tb1
INNER JOIN events as tb2 on tb1.event = tb2.event
WHERE tb2.owner <> 4
于 2013-04-04T14:16:31.243 に答える
-1

ここではphpを想定しています

SELECT event
FROM EXAMPLE_TABLE
WHERE owner NOT IN '$owner_id'
于 2013-04-04T14:17:18.460 に答える