Змінюй хід війни! Допомагай ЗСУ!

Нужен совет по MySQL

🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
Статус: Offline
Реєстрація: 02.12.2008
Повідом.: 55
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #1
Нужен совет по MySQL

Доброго всем дня, суть вопроса - из трех таблиц сделать запрос, который выдаст результат(рис 11).
Попробовал вот такой запрос:

SELECT tA.*, tB.nameB, tC.nameC
FROM tA
LEFT OUTER JOIN tB ON tA.id = tB.id
LEFT OUTER JOIN tC ON tB.id = tC.id
ORDER BY tA.id, tB.nameB, tC.nameC

...но резльтат (рис 22) не совсем тот, что нужно...

Видать где-то нужно вставить условие, чтоб ограничение по выводу строк было, по номерам (например из всех таблиц id=1 - 3 шт, id=2 - 2 шт и т.д) эти числа и будут ограничением, но...
Но это только предположение, нужен ваш совет и напутствие в решении вопроса.
 

Вкладення

  • 11.JPG
    11.JPG
    66.1 КБ · Перегляди: 119
  • 22.JPG
    22.JPG
    46.3 КБ · Перегляди: 90
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #2
бред какой-то.
это очередной шыдевр преподов из агадемии "Шаг в бездну" или за этим стоит какая-то реальная задача?
почему ббб-ууу можно, а ббб-ззз низззя?

толи есть какой-то еще признак, о котором мы ничего не знаем, но по которому надо связывать записи,
толи препод решил просто задрочить учеников.
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #3
это очередной шыдевр преподов из агадемии "Шаг в бездну" или за этим стоит какая-то реальная задача?
Не буду кривить душой, из этой серии, но не Шаг... просто самому хочется понять, как его (запрос) сделать. Судя по таблице результа, берет сначала первые значения из "С", потом вторые из "В" или что-то в этом роде.
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #4
но резльтат (рис 22) не совсем тот, что нужно

Видите ли сервер БД выдает результат тот что запросили с помощью SQL запросов. И (как в этом случае) делает это правильно.

Какой вам нужно он не знает.

Не буду кривить душой, из этой серии, но не Шаг... просто самому хочется понять, как его (запрос) сделать
Так лпределись чего ты получить хочешь прежде чем его делать.

Судя по таблице результа, берет сначала первые значения из "С", потом вторые из "В" или что-то в этом роде

сначала он связывает таблицы в соответствии с условиями join а потом "берет"
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #5
Так лпределись чего ты получить хочешь прежде чем его делать.
На рис 11 показаны 3 таблицы и результат который нужно получить. А на 22 рисунке то, что выдает мой пробный вариант, вот и спрашиваю чего не хватает в моем запросе, чтоб результат был как на рис. 11 (result) .
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #6
такой результат получит нельзя (кроме как выбирать каждую ячейку отдельным запросом) - он просто из пальца высосан.
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #7
похоже на full outer
если б автор умел формулировать задачи, может быть у кого-то и возникло бы желание помочь.. а так ну найух))
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #8
В языке SQL порядок следование записей в таблице не определен, т.е. по усмотрению субд. Поскольку rowid в mysql тоже нет, нужно вводить уникальный ключ.
Имхо, одним запросом такое сделать нельзя. Нужно что-то типа select name* from tA, (select from tC, tB limit 1)
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #9
В языке SQL порядок следование записей в таблице не определен, т.е. по усмотрению субд. Поскольку rowid в mysql тоже нет, нужно вводить уникальный ключ.
Имхо, одним запросом такое сделать нельзя. Нужно что-то типа select name* from tA, (select from tC, tB limit 1)
Так это и есть 1 запрос, но с подзапросом :). А с ними (с подзапросами, да и корелированным) у мускула бяда (если я прааально помню).

Вобщем в реальной, живой ситуации я бы делал процедуру. Цикл по первой таблице, курсоры по двум другим.
Кстати, полез проверить умеет ли такое мускул - и вот статейка на хабре что умеет:
⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #10
Использование ORDER BY и DISTINCT даст нужный результат, только не понятно нахуй.
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #11
Епрст. Этот реальная задача на реальных бизнес-данных или высосанная из непонятно откуда институтская/академическая шняга?

*В один запрос не вижу способа такое сделать
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #12
похоже на full outer
если б автор умел формулировать задачи, может быть у кого-то и возникло бы желание помочь.. а так ну найух))
Есть тестовое задание по мускулу, которое состоит из около 40 вопросов и ЭТОй задачи. Может и full outer, но он не работает на мускуле, скорей на постгресе.

joker сказав(ла):
умеет ли такое мускул - и вот статейка на хабре
Спс, щаз будем изучать статейку и пробовать подзапросы..

Ferox сказав(ла):
Использование ORDER BY и DISTINCT даст нужный результат
Спс буду пробовать.

MLover сказав(ла):
Епрст. Этот реальная задача или высосанная из непонятно откуда институтская/академическая шняга?
*В один запрос не вижу способа такое сделать
Это тестовое задание, судя по отзывам выше, похожа на "высососанную из...", сейчас пока пробую, то что посоветовали...
 
Останнє редагування:
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #13
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #14
Почитал, попробовал, не получилось - сделал выводы:

1) для юниора задачка не совсем из легких
2) высосанная из пальца
3) оставлю свой вариант, покажу, что пытался...надеюсь остальные ответы на тесты правильные.

Всем спасибо за уделенное внимание, не буду более отнимать время.

П.с. Надеюсь со временем, как наберусь практики, для интереса попробую к задачке вернуться :)
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #15
Использование ORDER BY и DISTINCT даст нужный результат, только не понятно нахуй.

:рл:

Есть тестовое задание по мускулу, которое состоит из около 40 вопросов и ЭТОй задачи. Может и full outer, но он не работает на мускуле, скорей на постгресе.

Вот автору этого тестового задания и надо дать подзатыльник. А full outer эмулируется через union left+right.
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #16
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #17
Чем плохая задача для собеседования? Решивший ее покажет не только владение SQL-ем, но и находчивость и умение добиваться результата :)
Как бы я сделал. Т.к. задача далека от практических нужд, то нужно не преумножать сущности и додумывать условия, а просто сделать то, что нужно и ни граммом более. Точечное решение конкретно этой задачи. Возможно? Возможно. Взять, нарезать отдельными запросами требуемые строки хоть по одной через limit, а потом объединить их union-ом. Можно сделать через full outer большую таблицу и вырезать delete все лишнее. Можно комбинировать эти два метода. Чем короче и красивее получится решение, тем больше будет получено балов.

Чуть опередили :)
Возможно для head-ddd-nul потребуется ввести вспомогательную таблицу c nameC, но без строки с id = 2, т.к. из существующих таблиц всегда будет head-ddd-www.
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #18
Чем плохая задача для собеседования? Решивший ее покажет не только владение SQL-ем, но и находчивость и умение добиваться результата
Владеющий SQL решать ее не станет а покрутит пальцем у виска. Самый лучший в данном случае способ продемонстрировать владение SQL.
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #19
Использование ORDER BY и DISTINCT даст нужный результат, только не понятно нахуй.

если хочешь казаться много более важным и умным, чем ты есть на самом деле
(а ты, несомненно, этого хочешь),
тебе лучше некоторое время просто ничего не писать.
 
  • 🟢 03:19 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
  • #20
Назад
Зверху Знизу