
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.235.147.50] |
![]() |
|
![]() | Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Сабж, даны две идентичные по структуре таблицы допустим t1 и t2
Есть запрос вида: ![]() ![]() SELECT field1+1 as f1, SUM(summa) as sum1 FROM t1 WHERE f2 BETWEEN 10 AND 20 AND f3 NOT LIKE "%ololo%" GROUP BY f1 ORDER BY f1 Уверен что можно применить данный запрос к обеим таблицам и суммировать результат, знаю что есть INNER JOIN и UNOIN ALL но как их применить, хз, гуглёж внятного объяснения не дал. Может кто пнуть в нужном направлении? Добавлено Хмм, поторопился, вот так оно работает: ![]() ![]() SELECT field1+1 as f1, SUM(summa) as sum1 FROM ( SELECT * FROM t1 WHERE f2 BETWEEN 10 AND 20 AND f3 NOT LIKE "%ololo%" UNION ALL SELECT * FROM t2 WHERE f2 BETWEEN 10 AND 20 AND f3 NOT LIKE "%ololo%" ) t GROUP BY f1 ORDER BY f1 |
![]() |
Сообщ.
#2
,
|
|
С точки зрения скорости исполнения лучше объединять окончательные запросы:
![]() ![]() SELECT f1, SUM(sum1) AS sum1 FROM ( SELECT field1+1 AS f1, SUM(summa) AS sum1 FROM t1 WHERE f2 BETWEEN 10 AND 20 AND f3 NOT LIKE "%ololo%" GROUP BY f1 UNION ALL SELECT field1+1, SUM(summa) FROM t2 WHERE f2 BETWEEN 10 AND 20 AND f3 NOT LIKE "%ololo%" GROUP BY f1 ) AS total GROUP BY f1 ORDER BY f1 |
Сообщ.
#3
,
|
|
|
Дабы не плодить тем. Спрошу тут.
Есть две таблицы 'foo' и 'bar' в обеих есть поле username, необходимо скопировать в таблицу foo поле password с таблицы bar по критерию bar.field3 = 'ololo', пробую так: ![]() ![]() UPDATE foo SET password=bar.password WHERE foo.username=bar.username AND bar.field3 = 'ololo' Выдаёт Unknown column 'bar.username' in 'where clause' |
Сообщ.
#4
,
|
|
|
Если кто будет искать
![]() ![]() UPDATE foo, bar SET foo.password=bar.password WHERE foo.username=bar.username AND bar.field3 = 'ololo' |
![]() |
Сообщ.
#5
,
|
|
Gonarh
Лучше стараться использовать JOIN-синтаксис, а не картезианку: ![]() ![]() UPDATE foo JOIN bar ON foo.username=bar.username SET foo.password=bar.password WHERE bar.field3 = 'ololo' |
Сообщ.
#6
,
|
|
|
Учту про синтаксис
|