powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / А можно в WHERE делать запросы?
17 сообщений из 17, страница 1 из 1
А можно в WHERE делать запросы?
    #40070561
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не всегда известны все ограничения для вывода данных и чтобы их узнать хочется сделать запрос к другой таблице, вернее к двум связанным таблицам. Таких ограничений нужно наложить несколько, поэтому Join не подойдет.
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40070566
подзапросы можно
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40070584
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola
Таких ограничений нужно наложить несколько, поэтому Join не подойдет.
у бабушки дальнозоркость +5, поэтому сегодня будет дождь
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40070593
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
Cola
Таких ограничений нужно наложить несколько, поэтому Join не подойдет.
у бабушки дальнозоркость +5, поэтому сегодня будет дождь

Поясню...
дело в том что есть 16 приджоининых таблиц к основной таблице. По сути основная таблица это список указателей на записи в других таблицах, иногда данные добываются через два джоина (указатель на таблицу в которой тоже есть указатель уже на конкретные данные, которые надо отобразить). Проблема в том. что есть еще набор таблиц, в которых описаны доступы к данным и это не одна таблица. По этой причине джоины тут не подойдут. А вот через Where решить наверное можно.
И мой вопрос как это можно сделать - нужен простой пример или ссылка на доку, поскольку я сама не нашла инфу. Надеюсь мне удалось объяснить.
За ранее благодарна.
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40070594
Фотография Cola
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
подзапросы можно

Подзапросы в Where или в Select?
Нужно именно в Where.
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40070612
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola
court
пропущено...
у бабушки дальнозоркость +5, поэтому сегодня будет дождь

Поясню...
дело в том что есть 16 приджоининых таблиц к основной таблице. По сути основная таблица это список указателей на записи в других таблицах, иногда данные добываются через два джоина (указатель на таблицу в которой тоже есть указатель уже на конкретные данные, которые надо отобразить). Проблема в том. что есть еще набор таблиц, в которых описаны доступы к данным и это не одна таблица. По этой причине джоины тут не подойдут. А вот через Where решить наверное можно.
И мой вопрос как это можно сделать - нужен простой пример или ссылка на доку, поскольку я сама не нашла инфу. Надеюсь мне удалось объяснить.
За ранее благодарна.


Не удалось... приведите пример логики требуемой на каком то простом примере чего бы вам хотелось получить.
На sql и в тех местах где sql не можете придумать - на русском языке.


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40070613
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola
Нужно именно в Where
даа, в Where
Код: sql
1.
where exists (select-запрос, возможно, коррелированный)


Код: sql
1.
where field in (select-запрос, возможно, коррелированный)


есть ещё all и any, но, думаю, они тебя не заинтересуют

в конце-концов, и так можно
Код: sql
1.
where (select-запрос с агрегацией возвращающий одну запись, возможно, коррелированный) > 0
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40071001
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
держу пари что джоины прекрасно подойдут. И мало того тоолько они и подойдут, ибо запихать в where подзапрос на 16 таблиц - это убийство базы, оптимизатора, перформанса, логики, глаз коллег и всего прочего
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40071022
если там под-под-таблицы, например: клиент->договор->акт
то будут дубли клиентов, если 2 договора
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40071044
Агрох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Звучит как работа для LEFT JOIN
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT T1.ID,
COALESCE(T2.FIELD, T3.FIELD, T4.FIELD) AS FIELD
FROM Table1 T1
LEFT JOIN Table2 T2
ON T2.ID = T1.ID
LEFT JOIN Table3 T3
ON T3.ID = T1.ID
LEFT JOIN Table4 T4
ON T4.ID = T1.ID



Table1 - содержит какой то ID
Table2, Table3, Table4 - максимум одна из таблиц содержит данные, связанные с каждым отдельно взятым ID из таблицы Table1.
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40071069
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola
Не всегда известны все ограничения для вывода данных и чтобы их узнать хочется сделать запрос к другой таблице, вернее к двум связанным таблицам. Таких ограничений нужно наложить несколько, поэтому Join не подойдет.


Я настоятельно рекомендую начать с чтения учебника по SQL.
Да я знаю что не модно... но без этого никак.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40071099
Агрох
Table2, Table3, Table4 - максимум одна из таблиц содержит данные, связанные с каждым отдельно взятым ID из таблицы Table1.

t4 связана только с t3
t3 только с t2
а вот t2 уже с t1
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40071115
Агрох
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
Агрох
Table2, Table3, Table4 - максимум одна из таблиц содержит данные, связанные с каждым отдельно взятым ID из таблицы Table1.

t4 связана только с t3
t3 только с t2
а вот t2 уже с t1


В моём примере - нет.
У ТС есть более сложное описание, но мой пример легко расширить до нужной вложенности:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT T1.ID,
  COALESCE(T2_1.FIELD, T3_2.FIELD, T4.FIELD) AS FIELD
FROM Table1 T1
  LEFT JOIN Table2 T2
    ON T2.ID = T1.ID
  LEFT JOIN Table2_1 T2_1
    ON T2_1.ID = T2.ID_1
  LEFT JOIN Table3 T3
    ON T3.ID = T1.ID
  LEFT JOIN Table3_1 T3_1
    ON T3_1.ID = T3.ID_1
  LEFT JOIN Table3_2 T3_2
    ON T3_2.ID = T3_1.ID_2
  LEFT JOIN Table4 T4
    ON T4.ID = T1.ID



И да, это просто пример без привязки к реальной структуре, т.к. ТС её нам не дал.
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40071135
что за 2_1, 3_1?
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40071298
Сотрудник Главного Управления
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cola
поэтому Join не подойдет

Cola
По этой причине джоины тут не подойдут

Вместо того, чтобы внятно объяснить, что вам нужно и привести схему вашей БД и текст запроса, вы начали поучать участников форума , многие из которых собаку съели на SQL-запросах, и рассказывать им всякие занятные и увлекательные истории о том, что "джоины здесь не подойдут".
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40071313
О-О-О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cola
Не всегда известны все ограничения для вывода данных и чтобы их узнать хочется сделать запрос к другой таблице, вернее к двум связанным таблицам. Таких ограничений нужно наложить несколько, поэтому Join не подойдет.


Используй pgSQL - любые самые извращенные запросы можно сделать от 5 минут.
В общем - средство на все случаи жизни. От 3 и более соединений время теряется не сильно, относительного того же SQL запроса (ну кроме разве что самых примитивных запросов с объединением полей из 3-х таблиц).

Почему то все напрочь забывают о pgSQL, даже на собеседованиях по PostgreSQL о нем не спрашивают, только голимые SQL запросы ( с 4-х этажными изворотами).
.
...
Рейтинг: 0 / 0
А можно в WHERE делать запросы?
    #40071390
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О-О-О
Cola
Не всегда известны все ограничения для вывода данных и чтобы их узнать хочется сделать запрос к другой таблице, вернее к двум связанным таблицам. Таких ограничений нужно наложить несколько, поэтому Join не подойдет.


Используй pgSQL - любые самые извращенные запросы можно сделать от 5 минут.
В общем - средство на все случаи жизни. От 3 и более соединений время теряется не сильно, относительного того же SQL запроса (ну кроме разве что самых примитивных запросов с объединением полей из 3-х таблиц).

Почему то все напрочь забывают о pgSQL, даже на собеседованиях по PostgreSQL о нем не спрашивают, только голимые SQL запросы ( с 4-х этажными изворотами).
.


Очень интересно что вы имеет в виду?


--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / А можно в WHERE делать запросы?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]