Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2012, 18:48   #1
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию 1 запрос 2 таблицы

Таблица games:

Код:
|id|name |price |
|1 |Горки |40.00 |
|2 |Горки2|450.00|
Таблица bought:
Код:
|id|login|game_id|
|1 |ihor |1      |
Стоит перед мною такая задача. В скрипте есть
PHP код:
$login "ihor"
Нужно одним запросом получить список всех игр, но с ячейкой с помощью которой можно понять, куплена ли игра этим человеком ($login) или нет.

От варианта - получить все игры и посылать Over1000 запросов по каждой игре и проверять, куплена ли она или нет глупо.
Abuhamed вне форума Ответить с цитированием
Старый 03.10.2012, 18:57   #2
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

Попробовал погуглить, и удивился когда узнал что в запросе к MySQL можно использовать оператор IF

Запрос получился такой:

PHP код:
SELECT t1.name,if(t1.id t2.game_id AND t2.login 'ihor',1,0) AS status FROM games t1bought t2 GROUP BY t1.id ORDER BY t1.id
Abuhamed вне форума Ответить с цитированием
Старый 03.10.2012, 20:33   #3
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

Код не всегда работает :/

Help!
Abuhamed вне форума Ответить с цитированием
Старый 03.10.2012, 23:44   #4
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

гугли в сторону JOIN
Mortimoro вне форума Ответить с цитированием
Старый 04.10.2012, 00:27   #5
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Код:
SELECT 
      G.name,
      IF (B.id IS NOT NULL, 1, 0) as `status`
    FROM games as G 
    LEFT JOIN bought as B ON B.game_id = G.id
    WHERE B.login = 'ihor'
    ORDER BY G.id
Здесь может быть одна проблема - вернет 2 записи об одной игре, если игра покупалась 2 раза .... надеюсь в структуре таблиц вы предусмотрели внешние ключи и уникальные поля

Последний раз редактировалось Cronos20; 04.10.2012 в 00:34.
Cronos20 вне форума Ответить с цитированием
Старый 04.10.2012, 07:13   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,156
По умолчанию

или группировку по названию игры добавить....
ADSoft на форуме Ответить с цитированием
Старый 04.10.2012, 11:38   #7
Abuhamed
Форумчанин
 
Аватар для Abuhamed
 
Регистрация: 27.01.2010
Сообщений: 330
По умолчанию

Cronos20

Ваш запрос возвращает только купленные игры этим пользователе, в этом и проблема, что мне нужно ВСЕ игры с status, что бы понять куплена ли эта игра (если да то кнопка "Войти") а если нет то кнопка "Купить".
Abuhamed вне форума Ответить с цитированием
Старый 04.10.2012, 11:56   #8
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,156
По умолчанию

может как-то так?
Код:
SELECT t1.name,
if(t1.id = t2.game_id AND t2.login = 'ihor',1,0) AS status 
FROM games t1 RIGHT JOIN bought t2 ON t1.id=t2.game_id GROUP BY t1.name ORDER BY t1.name;
ADSoft на форуме Ответить с цитированием
Старый 04.10.2012, 12:52   #9
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Код:
SELECT 
      G.name,
      IF (B.id IS NOT NULL, 1, 0) as `status`
    FROM games as G 
    LEFT JOIN bought as B ON B.game_id = G.id AND B.login = 'ihor'
    ORDER BY G.id
P.S. группировки здесь вообще ни о чем
Cronos20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Mysql запрос на 2 таблицы Abuhamed PHP 1 21.08.2012 08:52
Запрос на обновление таблицы IgoreKMaN БД в Delphi 12 27.04.2012 00:05
Запрос на извлечение записи из таблицы по id Ibanez Wizard SQL, базы данных 1 12.02.2012 11:37
Запрос на обновление данных таблицы atenon Microsoft Office Access 8 08.03.2011 13:52
Многократное включение таблицы в запрос Kofer SQL, базы данных 0 14.08.2008 22:59