MySQL заполнить таблицу с отсутствующими строками - PullRequest
0 голосов
/ 02 февраля 2012

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

db_firearms

(поле store указывает, появится ли оно в магазинах, 0 = нет, 1 = да)

id    name      store
-----------------------
1     Pistol    1
2     Shotgun   1
3     Sniper    0

store_firearms

(weapon полеотносится к идентификатору оружия в db_firearms)

id    city      weapon
-----------------------
1     Miami     1
2     Miami     2
3     New York  2 

Я хочу заполнить таблицу store_firearms каждым оружием MISSING из таблицы db_firearms store = 1 (где city =$ город).

Какой лучший способ сделать запрос для этого в mySQL?

Ответы [ 2 ]

0 голосов
/ 02 февраля 2012

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

SELECT  ID, Name, Store
FROM    db_firearms
WHERE   STORE = 1 AND
        ID NOT IN 
            (SELECT weapon 
            FROM store_firearms
            WHERE city = $city)
0 голосов
/ 02 февраля 2012

РЕДАКТИРОВАТЬ Полностью провалился, что первая попытка, с использованием NOT EXISTS работает.

INSERT INTO store_firearms (City, Weapon)
SELECT $city, F.Id
FROM db_firearms F        
WHERE F.Store = 1 AND NOT EXISTS (
    SELECT * FROM store_firearms WHERE City = $city AND Weapon = F.Id)

Если бы $ city был 'New York', это вставило бы 'New York', 1 в store_firearms

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