powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите плз написать SQL
8 сообщений из 8, страница 1 из 1
Помогите плз написать SQL
    #33358605
Sashok1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет уважаемый All !

У меня такая трабла - мне необходимо написать SQL для следующей задачи :

есть 2-е таблицы , в первой находятся записи с полем "name", а во второй некоторые записи из первой таблицы с такимже полем "name". Так вот мне необходимо выбрать все записи из первой таблицы, которых нету во второй таблице.

Сделать это желательно без вложенного SELECT.

Зарание благодарен, Alex
...
Рейтинг: 0 / 0
Помогите плз написать SQL
    #33358656
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
путей много. (как и вариантов трактовки вопроса)
например
Код: plaintext
1.
SELECT * FROM "first" EXCEPT
SELECT * FROM "second"
EXCEPT Clause
The EXCEPT clause has this general form:

select_statement EXCEPT [ ALL ] select_statementselect_statement is any SELECT statement without an ORDER BY, LIMIT, or FOR UPDATE clause.

The EXCEPT operator computes the set of rows that are in the result of the left SELECT statement but not in the result of the right one.

The result of EXCEPT does not contain any duplicate rows unless the ALL option is specified. With ALL, a row that has m duplicates in the left table and n duplicates in the right table will appear max(m-n,0) times in the result set.

Multiple EXCEPT operators in the same SELECT statement are evaluated left to right, unless parentheses dictate otherwise. EXCEPT binds at the same level as UNION.

Currently, FOR UPDATE may not be specified either for an EXCEPT result or for any input of an EXCEPT.

могабыть вы имели ввиду нечто типа

Код: plaintext
1.
2.
3.
SELECT * FROM "first" 
LEFT JOIN "second" 
        USING(name)
 WHERE "second".name IS NULL
...
Рейтинг: 0 / 0
Помогите плз написать SQL
    #33358671
Sashok1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за скорый ответ !

не.. чуть не то наверное..

мне надо выбрать из первой таблицы все записи которых нету во второй таблице сравнивая их например по "ID".
...
Рейтинг: 0 / 0
Помогите плз написать SQL
    #33358687
Sashok1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дополнение : поля не идентичны !! а связь проходит по "ID", тоесть из первой таблицы выбрать все, что не имеют ID которые есть во второй
...
Рейтинг: 0 / 0
Помогите плз написать SQL
    #33358779
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321
могабыть вы имели ввиду нечто типа

Код: plaintext
1.
2.
3.
SELECT * FROM "first" 
LEFT JOIN "second" 
        USING(name)
 WHERE "second".name IS NULL


LEFT OUTER JOIN, вероятно.
...
Рейтинг: 0 / 0
Помогите плз написать SQL
    #33359025
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilejn 4321
могабыть вы имели ввиду нечто типа

Код: plaintext
1.
2.
3.
SELECT * FROM "first" 
LEFT JOIN "second" 
        USING(name)
 WHERE "second".name IS NULL


LEFT OUTER JOIN, вероятно.

PostgreSQL 7.4 Documentation
join_type
One of
* [ INNER ] JOIN
* LEFT [ OUTER ] JOIN
* RIGHT [ OUTER ] JOIN
* FULL [ OUTER ] JOIN
* CROSS JOIN

то что, находится в [] писать не обязательно, т.е. INNER JOIN = JOIN
...
Рейтинг: 0 / 0
Помогите плз написать SQL
    #33359236
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то что, находится в [] писать не обязательно, т.е. INNER JOIN = JOIN

JOIN = INNER JOIN
и LEFT JOIN = LEFT OUTER JOIN.

Так что наличие или отсутствие слова OUTER в приведенном примере действительно никак не влияет на ситуацию.
...
Рейтинг: 0 / 0
Помогите плз написать SQL
    #33359338
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321
Код: plaintext
1.
2.
3.
SELECT * FROM "first" 
LEFT JOIN "second" 
        USING(name)
 WHERE "second".name IS NULL
Sashok1980не.. чуть не то наверное..
связь проходит по "ID"
я догадался!

Код: plaintext
1.
2.
3.
SELECT * FROM "first" 
LEFT JOIN "second" 
        USING(ID)
 WHERE "second".ID IS NULL
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите плз написать SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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