|
|
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
ИТАК. есть 30 таблиц, состоящих из 3 столбцов каждая. | id | url | stat | Необходимо в конце месяца слить данные со всех 30 таблиц в одну со следующим условием: (*) Если url совпадает, то показатели stat складываются. Пример: table1 | 1 | porno.ru | 5 | | 2 | yandex.ru | 3 | table2 | 1 | porno.ru | 3 | | 2 | rambler.ru | 6 | table итоговая | 1 | porno.ru | 8 | | 2 | yandex.ru | 3 | | 3 | rambler.ru | 6 | ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 21:03 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
чаво-нить вроде Код: plaintext да пребудет с вами гугл! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 22:26 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
Попробую. Спасибо,маХмо! А можно ли одним запросом еще и сделать INSERT полученного в новую таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 22:49 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
Попробовал. Код: plaintext 1. 2. пишет Код: plaintext Немного про типы полей, которые исользуются: 1) id smallint, unsigned, primary key, autoincrement 2) url VARCHAR(255) 3) count smallint, unsigned ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 11:45 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
чтож, на халяву не получилось. Но идею ты понял. Вот ещё халявное решение: Код: plaintext 1. 2. 3. да пребудет с вами гугл! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 15:26 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
Вторым способом тоже не получилось Код: plaintext 1. 2. написал: Код: plaintext 1. 2. пробовал убрать скобки - Код: plaintext 1. Честно говоря, никакой идеи я не понял. Оба способа, которые ты показал - не работают. Люди, кто знает конкретное решение проблемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 18:14 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
Ну, вот тебе решение влоб. Твою задачку можно решить в два шага. Сначала скидываем данные во врем. таблицу: Код: plaintext А после этого делаем нужную нам выборку: Код: plaintext Вот как это оформить одним запросом я не знаю. Тут же нет вложенных запросов.. Для корабля, который не знает куда плыть, нет попутного ветра... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 20:18 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
Подход меня устраивает - пусть будет хоть десять запросов (пока что я это все реализовал через циклы и перл. Ожидаемое число запросов ~ 30 000 =))) ) Только вот не работает твой запрос. Первый запрос, конечно понимает строки дубликаты и не дублирует их, только вот проблемка - счетчик не суммируется. Соответственно второй запрос бесполезен. Видимо не такая уж и простая задачка как кажется с виду. =) Pilot , спасибо за участие. Очень надеюсь , что мне все-таки подскажут решение, не то наступит конец месяца, и сервер нагнется на 30000 одновременных запросов. =)) Пожалуйста помогите! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 21:07 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
Как так не работает? Я ж его проверял! Может, у меня так сервер настроен... Ладно, тогда первый запрос перепиши так: Код: plaintext Для корабля, который не знает куда плыть, нет попутного ветра... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 22:21 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
Вот, смотри, после первого запроса: mysql> select * from tmpTable; +------------+------+ | url | stat | +------------+------+ | porno.ru | 5 | | yandex.ru | 3 | | porno.ru | 3 | | rambler.ru | 6 | +------------+------+ 4 rows in set (0.00 sec) А вот второй запрос: mysql> select url, sum(stat) from tmpTable group by url; +------------+-----------+ | url | sum(stat) | +------------+-----------+ | porno.ru | 8 | | rambler.ru | 6 | | yandex.ru | 3 | +------------+-----------+ 3 rows in set (0.00 sec) Для корабля, который не знает куда плыть, нет попутного ветра... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 22:24 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
Огромное тебе спасибо, Pilot. После вставки all все заработало. В принципе, неплохое рабочее решение (вроде такую вещь можно еще и при помощи merge сделать), но есть недостаток: Все пихается в одну таблицу, не оптимизировавшись. В итоге, таблица может стать реально большой . Конечно, можно сделать второй запрос, сделать новую таблицу из нее, старую удалить, но это имхо не очень оптимально. Может есть еще идеи? Кстати, еще небольшой вопросик: существует ли запрос, который позволяет узнать, существует ли таблица или нет? (как вариант - получить список таблиц в базе, а дальше перлом уже работать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 00:35 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Для корабля, который не знает куда плыть, нет попутного ветра... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 00:42 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
Кстати, если юзаешь MySQL >= MySQL 4.1 - там есть вложенные выборки - можно попробовать все оформить одним запросом. Увы, сам проверить не могу, т.к. у меня MySQL 4.0 существует ли запрос, который позволяет узнать, существует ли таблица или нет? Посмотри в сторону ф-ции EXISTS() .. Для корабля, который не знает куда плыть, нет попутного ветра... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 00:50 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
если с подзапросом, то: Код: plaintext 1. 2. 3. 4. да пребудет с вами гугл! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 12:27 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
Эх, пора переходить на новые релизы MySQL - скока новых возможностей и вложенные запросы - яркий тому пример.. Для корабля, который не знает куда плыть, нет попутного ветра... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 15:22 |
|
||
|
запрос на слияние таблиц (видимо просто, но я не знаю)
|
|||
|---|---|---|---|
|
#18+
Т.е. если подумать, можно и такое провернуть: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 17:56 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=32950996&tid=1854279]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 506ms |

| 0 / 0 |
