PyCobra Ответов: 2

Как объединить две строки одной таблицы в одну в SQL


Парень, я хочу объединить несколько строк из одной таблицы,чтобы результат печати был таким
[("1","Рик","менеджер","Париж"), ("2","датчанин","бухгалтерия","Париж")]
Было бы вот так
[("1","Рик","менеджер","Париж","2","датчанин","бухгалтерия","Париж")]

Что я уже пробовал:

деф место(место):
Конн= и sqlite3.подключиться " ("моя.дБ')
курсор = conn.cursor()
курсор m.execute("SELECT * FROM table WHERE location=?Союз всех",(место))
строка=курсор.fetchall()
соед.совершать()
соед.рядом()
pick("Париж")

2 Ответов

Рейтинг:
2

W∴ Balboos, GHB

Две вещи:

Во-первых, позволяет объединить все дубликаты, пока Союз не.

Вам нужен способ сравнить данные, которые отличаются только созданными пользователем нюансами.
Способ, которым я смог справиться с твоей проблемой., в большинстве случаев, заключается в следующем:

1 - Соберите все данные из вашего запроса и после приведения всех в формат char добавьте их в одно жало.
2 - фильтр sting так, чтобы остались только буквенно-цифровые символы. Это означает удаление всех пробелов и знаков препинания. Преобразуйте все в один и тот же случай, если это необходимо в вашем типе базы данных (а именно-а-а, тестирование на дубликаты).
3 - сравните эту строку с другими в вашем списке, сделанными таким же образом.
4 - Помните, что буквенно-цифровые различия, такие как орфографические ошибки, не будут обнаружены.

А теперь - что из этого осталось? Вам понадобится Способ четко выбрать источники из них (то есть те, которые совпадают) и заблокировать их.

Одна стратегия: сбросьте результат вашего запроса в таблицу tmp. Сделайте запрос на него, чтобы найти те, которые соответствуют агрегатным строкам, и удалите все, кроме одной, из таблицы. Используйте то, что осталось в таблице tmp, за исключением того, что вам больше не нужна агрегатная строка, чтобы выбрать для вашего запроса.

Как вы сделаете их отличными и удалите дубликаты (на основе aggregate) из вашей таблицы tmp, зависит только от вас ...


Рейтинг:
1

OriginalGriff

Вы можете сделать это только в том случае, если две строки имеют общую информацию - в противном случае система понятия не имеет, какую строку "объединить" с другой - и без этого она не может гарантировать получение одной и той же информации дважды подряд.

В вашем примере единственными общими данными являются "Париж", поэтому просто используйте соединение:

SELECT a.*, b.* 
FROM Table1 a
JOIN Table2 b
   ON a.ColumnWithParisIn = b.OtherColumnThatHasParisIn