SQL и выбор одинаковых строк
От: Flem1234  
Дата: 29.05.09 10:23
Оценка:
Есть таблица:
"Маша",  20, 50, 0
"Семён", 11, 50, 1
"Петя",  20, 50, 1

Надо выбрать те из них, у которых вторая и третья колонка равны между собой, т.е.
"Маша", 20, 50, 0
"Петя", 20, 50, 1

Что-то застрял
Re: SQL и выбор одинаковых строк
От: KRA Украина  
Дата: 29.05.09 10:27
Оценка:
Здравствуйте, Flem1234, Вы писали:

F>Есть таблица:

F>
F>"Маша",  20, 50, 0
F>"Семён", 11, 50, 1
F>"Петя",  20, 50, 1
F>

F>Надо выбрать те из них, у которых вторая и третья колонка равны между собой, т.е.
F>
F>"Маша", 20, 50, 0
F>"Петя", 20, 50, 1
F>

F>Что-то застрял

А что должно вернуться в этом случае
"Маша",  20, 50, 0
"Семён", 11, 50, 1
"Петя",  20, 50, 1
"Витя",  11, 50, 2
Re[2]: SQL и выбор одинаковых строк
От: Flem1234  
Дата: 29.05.09 10:32
Оценка:
Здравствуйте, KRA, Вы писали:

F>>Есть таблица:

F>>
F>>"Маша",  20, 50, 0
F>>"Семён", 11, 50, 1
F>>"Петя",  20, 50, 1
F>>

F>>Надо выбрать те из них, у которых вторая и третья колонка равны между собой, т.е.

KRA>А что должно вернуться в этом случае

KRA>
KRA>"Маша",  20, 50, 0
KRA>"Семён", 11, 50, 1
KRA>"Петя",  20, 50, 1
KRA>"Витя",  11, 50, 2
KRA>


Только Маша с Петей:
"Маша",  20, 50, 0
"Петя",  20, 50, 1

Т.е. только строки равные по второму и третьему полю.
Re[3]: SQL и выбор одинаковых строк
От: KRA Украина  
Дата: 29.05.09 10:34
Оценка:
Здравствуйте, Flem1234, Вы писали:

F>Только Маша с Петей:

F>
F>"Маша",  20, 50, 0
F>"Петя",  20, 50, 1
F>

F>Т.е. только строки равные по второму и третьему полю.

Забыл, что считать нужно с нуля
Тогда вопрос для таблицы
"Маша",  20, 50, 0
"Семён", 11, 50, 1
"Петя",  20, 50, 1
"Витя",  11, 50, 0
Re: SQL и выбор одинаковых строк
От: Ziaw Россия  
Дата: 29.05.09 10:45
Оценка:
Здравствуйте, Flem1234, Вы писали:

F>Надо выбрать те из них, у которых вторая и третья колонка равны между собой, т.е.


select * from tbl tt
where (tt._2, tt._3) in (select t._2, t._3 from tbl t group by t._2, t._3 having count(1) > 1)
... << RSDN@Home 1.2.0 alpha 4 rev. 1176>>
Re[4]: SQL и выбор одинаковых строк
От: Flem1234  
Дата: 29.05.09 10:47
Оценка:
Здравствуйте, KRA, Вы писали:

Лучше сразу перейду к исходной задаче Называется "объединение записей"
мне дают список id строк, нужно проверить, что у строк с этими id определенные поля равны, и если равны то вставить в эту же таблицу новую строку с этими полями + агрегатами тех полей, что не равны. А строки с исходными id удалить.

пример: было
"Маша",  20, 50, 0
"Семён", 11, 50, 1
"Петя",  20, 50, 1

пришел приказ объединить Машу с Петей.
стало
"Маша+Петя",  20, 50, 1
"Семён",      11, 50, 1


KRA>Забыл, что считать нужно с нуля


Я колонки с единицы считаю
Re[5]: SQL и выбор одинаковых строк
От: KRA Украина  
Дата: 29.05.09 10:53
Оценка:
Здравствуйте, Flem1234, Вы писали:

F>Здравствуйте, KRA, Вы писали:


F>Лучше сразу перейду к исходной задаче Называется "объединение записей"

F>мне дают список id строк, нужно проверить, что у строк с этими id определенные поля равны, и если равны то вставить в эту же таблицу новую строку с этими полями + агрегатами тех полей, что не равны. А строки с исходными id удалить.

А если есть три записи и у двух поля равны а у третьей нет?
А если четыре записи и у первой и второй поля равны между собой и у третьей и четвёртой равны, но у первой и третьей не равны?
Re[6]: SQL и выбор одинаковых строк
От: Flem1234  
Дата: 29.05.09 10:58
Оценка:
Здравствуйте, KRA, Вы писали:

F>>Лучше сразу перейду к исходной задаче Называется "объединение записей"

F>>мне дают список id строк, нужно проверить, что у строк с этими id определенные поля равны, и если равны то вставить в эту же таблицу новую строку с этими полями + агрегатами тех полей, что не равны. А строки с исходными id удалить.

KRA>А если есть три записи и у двух поля равны а у третьей нет?

KRA>А если четыре записи и у первой и второй поля равны между собой и у третьей и четвёртой равны, но у первой и третьей не равны?

Тогда ничего не делать. Видимо, это лучший вариант.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.