За последние 24 часа нас посетили 21840 программистов и 1076 роботов. Сейчас ищут 622 программиста ...

Выборка из двух таблиц

Тема в разделе "Сделайте за меня", создана пользователем CriPl, 30 мар 2018.

  1. CriPl

    CriPl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    4
    Симпатии:
    0
    Добрый день! Ребята помогите выправить код по умному. Есть две таблицы, в первой список военных, во второй событие с датой и айди юзера:
    Код (Text):
    1. users -> id | name | rank
    2. horoscope -> id_user (тут id с таблицы users) | horoscope_name (тут события) | date
    Нужно вывести расход юзеров по списку со званием (это я сделал) и вывести список кто в отпуске или болеет. Написано у меня так:
    Код (Text):
    1. $query_ser = mysql_query("SELECT * FROM users WHERE
    2.                         rank = 'рядовой' OR
    3.                         rank = 'ефрейтор' OR
    4.                         rank = 'мл. сержант' OR
    5.                         rank = 'сержант' OR
    6.                         rank = 'ст. сержант' OR
    7.                         rank = 'старшина'");
    8. $row_serg = mysql_num_rows($query_ser);
    Тут я подсчитал количество сержантов из всего списка. А как теперь высчитать из этого выведенного списка тех кто болеет или в отпуске из другой страницы по айди выбранных юзеров из первой таблицы, ума не приложу =( всю голову сломал. Помогите с решением данной проблемы пжл.
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.823
    Симпатии:
    736
    Адрес:
    Татарстан
    как то так:
    Код (Text):
    1. SELECT * FROM users AS u
    2. LEFT JOIN FROM horoscope AS h ON u.id = h.id_user
    3. WHERE u.rank in ('рядовой','ефрейтор','мл. сержант','сержант','ст. сержант','старшина') && h.horoscope_name='отпуск' ..... еще ваши условия
    4. GROUP BY u.id
    еще замечание по структуре таблицы, лучше хранить не само звание, а его id в таблице званий, которую в свою очередь можно будет группировать по группам сержанты, офицерский состав, рядовой состав итд)
    типа
    table_rank
    id rank_name rank_group
    1 сержант 1
    2 рядовой 2
    3 старший сержант 1
    4 лейтенант 3

    table_group
    id name_group
    1 сержантский состав
    2 рядовые
    3 Офицерский состав
     
  3. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    простые джоины, это то же самое, что и игра в домино