Как сравнить 2 таблицы в поисках недостающих предметов - PullRequest
1 голос
/ 20 сентября 2010

У меня есть две таблицы, одна из которых содержит огромный список предметов, а другая - торговля этими предметами.

Вот примеры таблиц:

Основной стол

| ID | TITLE | STATUS | TRADE |
-------------------------------
|  1 | test1 |    1   |   1   |
|  2 | test2 |    1   |   1   |
|  3 | test3 |    1   |   0   |
|  4 | test4 |    0   |   1   |

Торговый стол

| ID | TRADER | ITEM | URL                           |
------------------------------------------------------
|  1 |    2   |   1  | HTTP://www.test.com/itemOne   |
|  2 |    5   |   3  | HTTP://www.test.com/itemThree |
|  3 |    5   |   4  | HTTP://www.test.com/itemFour  |

Скажем, я хочу получить список всех предметов, которые не были проданы трейдером 5 и имеют статус 1. Поэтому, когда трейдер 5 придет на сайт, он сможет выбрать оставшиеся предметы для торговли. 1011 *

Вот что я пробовал:

$sql = "SELECT m.id, m.title
        FROM main AS m, trade AS t 
        WHERE m.trade >= 1 && m.status = 1 && 
        t.trader <>". mysql_real_escape_string($traderID);

Этот код просто не работает. Есть идеи по этому поводу?

Ответы [ 2 ]

1 голос
/ 20 сентября 2010

Мне не ясно, какой столбец в Trades является FK для Main.Ниже я предположил, что это столбец Item:

select m.id, m.title 
from Main m 
where not exists (
    select * 
    from trade 
    where m.id = item 
        and trader = 5
)
    and m.status = 1
0 голосов
/ 20 сентября 2010

Попробуйте это:

SELECT id, title FROM main 
WHERE status = 1 AND id NOT IN 
      (SELECT item FROM trade WHERE trader = 5);

Это будет захватывать список всех title в основном со статусом 1, но ограничивать элементы, основанные на подзапросе, который получает список идентификаторов, уже проданных трейдером 5 (то есть элементы, которых нет в списке товары, возвращенные как проданные трейдером 5).

Я оставлю это вам, чтобы обновить запрос для параметризации по мере необходимости.

Обратите внимание, что я предполагаю, что товар в торговле является внешним ключом для поля id в main, поскольку вы его не указали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...