1

データベースに3つのテーブルがあります。

news「すべてのニュースがリリースされました」の最初の表( )と列

NEWS_ID

plyrs_read「ニュースを読んだプレイヤーとそのニュース」の2番目の表( )と列

PLAYER_ID | NEWS_ID

players「サーバー上のすべてのプレーヤー」の3番目のテーブル( )。列付き

PLAYER_ID

プレーヤーが読んでいないすべてのニュースをプレーヤーに見せたい。私は彼のIDを$idに持っています。

今、私はそれらすべてをNEWS_ID配列に入れるのに助けが必要です

4

4 に答える 4

2

これはどう?

SQLFIDDLEデモ

select * from news n
where id not in(select pn.nid 
                from player_news pn
                where pn.pid = 1)
;

結果:

| ID |   TITLE |
----------------
|  1 | country |
于 2013-01-21T07:52:18.657 に答える
1
SELECT *
FROM news
WHERE news_id NOT IN(SELECT r.news_ID 
                     FROM plyrs_read r 
                     INNER JOIN players p ON r.Player_ID = p.Player_ID
                     WHERE p.player_ID = 'some id'
                       AND r.news_ID IS NOT NULL);

SQLフィドルデモ

于 2013-01-21T07:23:14.490 に答える
0
SELECT NEWS_ID FROM table1
WHERE NEWS_ID NOT IN
    ( SELECT NEWS_ID FROM table2 WHERE PLAYER_ID = $id )
于 2013-01-21T07:23:26.247 に答える
0
SELECT n.NEWS_ID FROM news n 
LEFT OUTER JOIN plyrs_read pr 
ON n.NEWS_ID = pr.NEWS_ID AND pr.PLAYER_ID = $id 
WHERE pr.NEWS_ID IS NULL
于 2013-01-21T07:24:58.380 に答える