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

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

🟡 01:59 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
Статус: Offline
Реєстрація: 02.12.2008
Повідом.: 55
  • 🟡 01:59 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #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
  • 🟡 01:59 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #2
бред какой-то.
это очередной шыдевр преподов из агадемии "Шаг в бездну" или за этим стоит какая-то реальная задача?
почему ббб-ууу можно, а ббб-ззз низззя?

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

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

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

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

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

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

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

*В один запрос не вижу способа такое сделать
 
  • 🟡 01:59 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #12
похоже на full outer
если б автор умел формулировать задачи, может быть у кого-то и возникло бы желание помочь.. а так ну найух))
Есть тестовое задание по мускулу, которое состоит из около 40 вопросов и ЭТОй задачи. Может и full outer, но он не работает на мускуле, скорей на постгресе.

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

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

MLover сказав(ла):
Епрст. Этот реальная задача или высосанная из непонятно откуда институтская/академическая шняга?
*В один запрос не вижу способа такое сделать
Это тестовое задание, судя по отзывам выше, похожа на "высососанную из...", сейчас пока пробую, то что посоветовали...
 
Останнє редагування:
  • 🟡 01:59 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #13
  • 🟡 01:59 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #14
Почитал, попробовал, не получилось - сделал выводы:

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

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

П.с. Надеюсь со временем, как наберусь практики, для интереса попробую к задачке вернуться :)
 
  • 🟡 01:59 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #15
Использование ORDER BY и DISTINCT даст нужный результат, только не понятно нахуй.

:рл:

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

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

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

если хочешь казаться много более важным и умным, чем ты есть на самом деле
(а ты, несомненно, этого хочешь),
тебе лучше некоторое время просто ничего не писать.
 
  • 🟡 01:59 Відбій тривоги в Харківська область.Зверніть увагу, тривога ще триває у:- Куп’янський район- Харківський район- Липецька територіальна громада- Вовчанська територіальна громада#Харківська_область
  • #20
Назад
Зверху Знизу