Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.148.115.187] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов 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
,
|
|
|
Учту про синтаксис
|