![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
Isaev |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 8.11.2007 Где: Germany Репутация: нет Всего: нет |
Доброго времени суток
Делаю выборку из 1 таблицы:
потом обхожу её в цикле и выбираю для каждой записи следующие данные(тут zid это id из первой выборки):
Как эти 2 зарпоса объединить в один? Заранее благодарен |
||||
|
|||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Isaev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 8.11.2007 Где: Germany Репутация: нет Всего: нет |
Zloxa, нет, всё работает, просто я хочу 1 запросом вытаскивать все нужные данные, чтобы не нагружать лишний раз сервер, да и не громоздить в коде (просто если первый запрос возвернёт 5000 записей, потом делаю 5000 вторых запросов, что не желательно бы)
т.е. надо получить сразу id, pid, title, sorting, headline, text в ответе и немного не так вы поняли проблемму... mid это переменная, не имеющая отношения к таблице, можете взять любую константу, например 1 zid(во избежании путаницы, т.к. во втором запросе тоже есть id) это тоже переменная, которая равна id из первого запроса на каждом этапе обхода его курсором например Это сообщение отредактировал(а) Isaev - 12.11.2013, 12:43 |
|||
|
||||
Isaev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 8.11.2007 Где: Germany Репутация: нет Всего: нет |
Zloxa, а точно, работает! не думал что так просто, спасибо большое!
Это сообщение отредактировал(а) Isaev - 12.11.2013, 12:54 |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Пропишите их в селектлисте. Это вы не правильно поняли, что я вам предложил. Подумайте еще раз.
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Isaev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 8.11.2007 Где: Germany Репутация: нет Всего: нет |
Zloxa, есть только один не приятный момент)
если при "втором" запросе ничего не находится для данного id, то то, что было в первом должно бы оставаться, просто с пустыми полями headline, text а в данном случае оно, естественно отсеивается это возможно поправить? думаю там что-то типа JOIN надо использовать Это сообщение отредактировал(а) Isaev - 12.11.2013, 13:22 |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 2 Всего: 101 |
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Не типа, а именно JOIN. Причём LEFT JOIN. Причём явно указать порядок связывания таблиц - во избежание.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Isaev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 8.11.2007 Где: Germany Репутация: нет Всего: нет |
не выходит что-то... извиняюсь конечно, что туплю... всё конечно просто, когда штудировал sql щёлкал тоже как орешки, но давно это было
Порядок да, не указал я выше нигде... порядок следующий: `tl_page`основная таблица, откуда берем (id, pid, title, sorting) для результирующей `tl_article`просто для связи `tl_page` и `tl_content`, там только id и pid `tl_content` отсюда берём headline, text, если есть соответствие, иначе оставляем эти поля пустыми |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Вы тщательнее, тщательнее тужтесь. ![]() http://segfault.kiev.ua/smart-questions-ru.html#grovelling Это сообщение отредактировал(а) Zloxa - 12.11.2013, 14:43 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Значит, или (tl_page INNER JOIN tl_article) LEFT JOIN tl_content или (tl_article INNER JOIN tl_page) LEFT JOIN tl_content А если оптимизатор настолько "умный", что сперва раскроет скобки, а потом про них забудет - то вообще придётся первое связывание выполнять в подзапросе. UPD: фигня, у нас одно левое связывание. Это сообщение отредактировал(а) Akina - 12.11.2013, 14:50 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Если пилить подобие цикла из топикстарта, то page left join (article inner join context) Но мне кажется усложнение тут излишним. Для начало следовало бы исследовать неприемлимость тупого лефджойна всего прочего к пейджу. Скорее всего он допустим. Разница всплывет лишь в случае неуникальности неконсистентной связи в артиклях. Это сообщение отредактировал(а) Zloxa - 12.11.2013, 14:58 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Isaev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 8.11.2007 Где: Germany Репутация: нет Всего: нет |
не, не ![]() да и для моей задачи и мой вариант годится, там выбока не большая... Просто врождённая слабость к оптимизациям)
её скорее всего тоже нету т.е. вложенного SELECT тут не будет? почему-то я к нему прихожу постоянно Это сообщение отредактировал(а) Isaev - 12.11.2013, 15:07 |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Если в артикле не содержится "подвисших" записей, то вложенный селект не нужен. Если в артикле пара id,pid ункальна, вложенный селект не нужен. Если я правильно понял структуру даннных и данные в этой структуре целостны, то оба вышеперечисленных условия должны выполняться. Таки даже в случае униакльности несогласованных данынх, выборка может замножить записи, потому условия сократил. Добавлено @ 15:19 Именно что убили. Вы не показали ничего, к чему пришли в течении часа. Вы не рассказали что именно у вас не получается и не показали какой дорогой пошли. Это наводит на мысли что вы бы предпочли чтобы вас не направляли в нужную сторону, а тупо сделали бы за вас вашу работу. А это объясняет - почему у вас отсутствует желание разбиратсья с элементарнейшими основами. ![]() Если вас не заботит результат, от чего он должен заботить кого-то другого? ![]() Это сообщение отредактировал(а) Zloxa - 12.11.2013, 15:31 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Isaev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 8.11.2007 Где: Germany Репутация: нет Всего: нет |
пока возвращает слишком много лишнего Это сообщение отредактировал(а) Isaev - 12.11.2013, 15:33 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Isaev, внимательно...
Нет, не так. ВНИМАТЕЛЬНО перечитайте ещё раз всю тему. Чем ближе к концу, тем внимательнее. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
||||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Короче, тему пора закрывать:
либо, если в артикле есть "битые" ссылки на контент, чтобы получить аналог с топикстартом:
Для второго, случая, думаю, мася врядли сможет применить латерал субквери и пропушить джойн предикат из внешнего подзапроса, потому, если за согласованностью данных не следят, скорее всего это получится анти оптимизация. Это сообщение отредактировал(а) Zloxa - 12.11.2013, 16:19 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Тогда уж лучше добавить доп. условие в первый вариант и отсечь зависший контент
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
пожалуй, можно еще отфильтровать их добавив в where первого запроса. Наверное как-то так:
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Zloxa,
![]() -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Akina, где-то мы с тобой расходимся, кто-то из нас накосячил. По закону де моргана у нас с тобой должны бы быть инверсными предикаты.
Я вот даже табличку истинности набросал, но чот не могу сообразить кто же накосячив. Моя предвзятость меня склоняет к мнению, что я скорее более прав, но что-то не позволяет склониться к этому мнению уверенно.
Мне кажется ты отфильтровываешь тот кейс, который невер бин хаппенд. и это. Здесь лучше пид. Если id nullable, а произошел джойн по пиду... Это сообщение отредактировал(а) Zloxa - 12.11.2013, 17:33 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Это опечатка :(
Я фильтрую подвисший текст. Т.е. контент есть, а статьи к нему нет. КАжется... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
C учетом того, что контент тут подтягивается через артикль, это не существующий кейс )) Это сообщение отредактировал(а) Zloxa - 12.11.2013, 21:47 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Isaev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 8.11.2007 Где: Germany Репутация: нет Всего: нет |
Zloxa, взял второй вариант на всякий случай, хотя первый справляется так же, видимо кривых данных нет (ну пока по крайней мере), но т.к. за них отвечаю не я, лучше подстраховаться
Спасибо, ребята! Большое и человеческое |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |