За последние 24 часа нас посетили 58737 программистов и 1816 роботов. Сейчас ищут 914 программистов ...

Как объединить два запроса

Тема в разделе "Подворотня", создана пользователем alikmakh, 28 сен 2015.

  1. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    работает мой пример. я проверял. просто он не решает твою задачу. или ты не понимаешь как его использовать для решения своей задачи.

    как рецепт и операция связаны? есть вот пара доктор-пациент. доктор выписал пациенту рецепт и потом отправил на операцию по этому рецепту или пациент может на операции оказаться независимо от рецепта? вот это та самая связь которая тут совсем не очевидна.


    выбрать доктор, пациент, рецепт как документ из рецепты где доктор такой-то и дата между от до
    объединить
    выбрать доктор, пациент, протокол как документ из операции где доктор такой-то и дата между от до


    вот так будет список всех бумажек где есть доктор и всё это уложено в сроки



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


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


    задача-то какая? ты в два раза больше меня прожил и не научился ясно мысли излагать?
     
  2. alikmakh

    alikmakh Новичок

    С нами с:
    26 авг 2015
    Сообщения:
    31
    Симпатии:
    0
    Это не так. Ко мне в голову лезть не надо. Я привел примеры, ты предложи свой вариант. Тут всё предельно ясно на мой взгляд. И не надо приводить схему и тп....
    Два запроса я привел в начале, спросил как их выразить в одном запросе... Вот и всё. :)))

    Добавлено спустя 5 минут 58 секунд:
    Твой пример совсем не туда. Мне не надо посчитать (count).
    Мне надо SELECT id_patient, id_reception и id_protocol из двух таблиц (receptions и operations_protocols),
    ГДЕ id_doctor=$id_doctor И date > $start_date И date < $end_date (в обоих таблицах).

    Добавлено спустя 2 минуты 1 секунду:
    Не надо грубить. Я не виноват в том, что ты не можешь понять!!! (тут и твоя вина первостепенна).
     
  3. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну знаешь если б один тебя не мог понять то ладно я тугодум, но тут уже не один человек побывал а тебя до сих пор не разгадали. так и чья вина превостепеннее? вот-вот. тебе пытаются помочь и так и сяк и ты только и пихаешь мол я уже вам всё сказал что нужно и больше вам знать не следует но помочь вы все обязаны.
     
  4. alikmakh

    alikmakh Новичок

    С нами с:
    26 авг 2015
    Сообщения:
    31
    Симпатии:
    0
    Пока тут двое - ты и igordata. Я не виноват опять таки :)))

    igordata меня отправил джоины изучать :))), ты говоришь "зачем тут джоины".
    Да, JOIN не работает как надо (именно в моём примере) - работает UNION.
    Но и UNION выдаёт пустые значения (смотри файл, http://moybufer.ru/2xpucxike4).
    Я знаю, что JOINом можно решить задачу, только я не знаю как.
    Если ты знаешь, то подскажи ;-)
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да, дениса ты вообще проигнорировал. молодец чо. и обрати внимание как ты любишь обсуждать личности вместо того чтоб отвечать на поставленные вопросы о поставленной в свою очередь тобой же задачей. тебе помощь и не нужна значит. так чисто потрындеть. ты коньячок любишь или виски? или нашу беленькую родненькую?
     
  6. alikmakh

    alikmakh Новичок

    С нами с:
    26 авг 2015
    Сообщения:
    31
    Симпатии:
    0
    Ну, зря ты так (. Не потрындеть конечно я сюда написал, а за решениями, которые могут мне подсказать.....
    Ты сам пока "трындишь" и не понятно чего от меня хочешь.
    Ладно. Дождемся других посетителей этого форума....
     
  7. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Подытожу:
    чтобы помочь вам решить данный вопрос, пожалуйста, выложите дамп БД на http://sqlfiddle.com/,
    так нам будет гораздо проще. Не придётся угадывать, блистать теорией и тд. На практике всё решается гораздо проще.
     
  8. alikmakh

    alikmakh Новичок

    С нами с:
    26 авг 2015
    Сообщения:
    31
    Симпатии:
    0
    Я не знаю как там выложить mysql_dump - у нас база большая а там ограничение на аплоуд.
    НО. ЗАЧЕМ?! Я же просто показал два запроса к базе и спросил как это выразить в одном!
    Как найти в двух таблицах строки и выдать результат.
    UNIONом у меня получилось, НО там есть некоторые глюки (пустые поля в строке).
    Вот я и хотел бы услышать решения как можно этого избежать (пустые поля в строке). (смотри картинку, что я привел выше)
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    я там еще два запроса подкинул - где реакция на них?
     
  10. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Не бывает идеальных программистов. Нет таких, кто бы сказал: "Эта хрень БУДЕТ работать так". Есть идеи, но их надо протестить. Тестить десятки раз через вас - не идеал. Это часы работы, которые можно сделать за 3 минуты самому.
     
  11. alikmakh

    alikmakh Новичок

    С нами с:
    26 авг 2015
    Сообщения:
    31
    Симпатии:
    0
    Я протестю. Предложите свои варианты.... Предложите свой подход. Если он будет мне приемлем то я Вам скажу спасибо .
     
  12. pepsil74

    pepsil74 Новичок

    С нами с:
    29 сен 2015
    Сообщения:
    1
    Симпатии:
    0
    Извините, но Вас правильно отправили изучать JOIN.
    INNER JOIN - это то что Вам надо.
    Так как Вам нужно это:
    то, наверное подойдет вот этот код

    Код (PHP):
    1. SELECT r.id_patient, r.id_reception, op.id_protocol
    2. FROM receptions r INNER JOIN operations_protocols op 
    3.   ON (r.id_patient = op.id_patient AND r.id_doctor = op.id_doctor)
    4. WHERE r.date > 1443398400 AND r.date < 1443458873 AND r.id_doctor=21
    5.   AND op.date > 1443398400 AND op.date < 1443458873
    p.s. В SQL некоторых СУБД, например, PostgreSQL, можно не использовать INNER JOIN, тогда выражение объединения в ON переместится в WHERE.

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  13. alikmakh

    alikmakh Новичок

    С нами с:
    26 авг 2015
    Сообщения:
    31
    Симпатии:
    0
    Ты, парень заблуждаешься....
     
  14. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    alikmakh сделай экспорт в phpmyadmin, уменьши количество данных и можешь выложить сюда или свои данные заменить на другие для примера. Или выложи на файл обменник.
     
  15. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это единственные люди, которые взялись тебе помогать, и ты их обосрал. =)

    Добавлено спустя 1 минуту 10 секунд:
    я уже просил =) он отказался, ибо да, он не умеет. Ему дай и положь и все тупые вокруг.

    Добавлено спустя 2 минуты 11 секунд:
    джоин на мой взгляд тут скорее всего нужен, ибо нужно выбрать три колонки из двух таблиц, при этом у запросов совпадает where. Мне кажется это джоин. До выкладки на sqlfiddle больше об этом думать не хочется и не охота лезть в голову другому человеку. Давайте подождём, пока чувак научится не требовать решения, а просить о помощи.

    Готовые решения тут делают за денюжку, такая традиция сложилась. Не хочешь учиться - плати.
     
  16. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а чего ты раньше на это сообщение не ответил?
     
  17. alikmakh

    alikmakh Новичок

    С нами с:
    26 авг 2015
    Сообщения:
    31
    Симпатии:
    0
    INNER, LEFT,RIGHT,OUTER - приводят к одному и тому же результату в вашем примере - вместо 35 ресепшенов и 2 опреаций найдено 2 операции и два ресепшена.
    :)))
    Из всех предложенных тут вариантов ни один не рабочий, кроме моего, что с UNION.

    Добавлено спустя 4 минуты 24 секунды:
    Вы сами себя же и обосрали. Я на вас не срал - не имею такой привычки.
    Если нет способности чего-то подсказать, не надо искать причины, которые мешают "хорошему" танцору танцевать :).
     
  18. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Причина есть, от тебя нужны схемы таблицы и данные в sql, без них можно только гадать.
     
  19. alikmakh

    alikmakh Новичок

    С нами с:
    26 авг 2015
    Сообщения:
    31
    Симпатии:
    0
    Не нужны всё перечисленное тобой знающему человеку. Ему достаточно примера, который я привел вверху - два запроса или один с UNION. А вам может ещё и паспорт от меня понадобиться, чтобы убедиться, что я гражданин РФ и только тогда вы сможете мне помочь ;-)
     
  20. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    чсв зашкаливает
     
  21. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    alikmakh ты попадаешь в ловушку когда усложняешь задачу тому кто хочет тебе помочь, и если он будет знающим человеком, то подумает, зачем тебе помогать если ты сам не хочешь помощи.

    Особенно мне нужно подтверждение, того что у тебя есть гражданство РФ.
     
  22. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Самая забавная тема за последнее время. Уже вторую страницу гадаю чей лоб тверже: автора или отвечающих )) Не, ну на самом деле. Автор сам себе враг, при чем в хронической форме. Нафига? )
     
  23. alikmakh

    alikmakh Новичок

    С нами с:
    26 авг 2015
    Сообщения:
    31
    Симпатии:
    0
    Интересно кто закрыл мою тему не форуме?!

    У меня была тема на форме, там что-то, кто-то обсуждал. Но вдруг её закрыли. Почему?!
    Без объявления причин - просто закрыли тему и всё тут (!)
    Никаких нарушений не было (если были, то почему модератор не сказал об этом?!)
    ПРОСТО ЗАКРЫЛИ и всё тут (!).
    Модераторы, к вам обращаюсь! Почему закрыли мою тему-то?! А?
     
  24. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Re: Интересно кто закрыл мою тему не форуме?!

    Потому что достал. Не, могу открыть. Но тебе не понравится.
     
  25. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Re: Интересно кто закрыл мою тему не форуме?!

    И ссылку дайте