Здравствуйте, гость ( Вход | Регистрация )
Iron Bug | Дата 21.1.2011, 7:36 |
Мне кажется имелась ввиду выборка не одного поля, а нескольких. ну дык, а в чём проблема написать такое выражение для скольки угодно полей? это просто пример. реализация будет зависеть от типов данных в таблице и от того, пересекаются ли таблицы по значениям поля id. |
|
MoPDoBoPoT | Дата 20.1.2011, 22:16 |
можно также попробовать выборку с полным join'ом, что-нить типа Мне кажется имелась ввиду выборка не одного поля, а нескольких. Можно ли в FROM записать какое-либо условие, например, если поле равно тому-то то выборка из такой таблицы,а если нет то из другой таблицы Так как сущности односхемные, то можно это сделать двумя запросами, объединёнными операцией UNION:
Я в примере написал UNION ALL, так как в твоём случае из таблиц выбираются взаимоисключающие записи (по условию), что избавляет СУБД от вложенной проверки на одинаковые записи. |
|
Iron Bug | Дата 19.1.2011, 23:32 |
ну, гипотетически можно попробовать сделать VIEW из двух таблиц. но не все базы это поддерживают. можно также попробовать выборку с полным join'ом, что-нить типа select (t1.field1*CheckId(t1.id)+t2.field1*CheckId(t1.id)) as field1 from table1 t1 full join table2 t2 on t1.id=t2.id where ... (это пример, c численными значениями field1 и некоей абстракцией CheckId(), которая должна быть заменена на конструкцию проверки нужного условия и выдавать 0 или 1, в зависимости от false/true. точно это всё надо сочинять, согласно правилам SQL, я просто деталей уже не помню, слишком давно писала базы). понятно, что для этого надо составлять очень хитрожопые условия суммирования полей (объединения, для строк) - так, чтобы одно из них занулялось по условию равенства единице этого самого id'а, а ещё как-то проверять на NULL (ибо при full join скорее всего будет множество пустых полей). да и работать будет весьма медленно. да, кстати, через функции может сработать. юзерскую функцию можно написать, если база поддерживает такое. а так, напрямую, средствами стандартного синтаксиса, нельзя. |
|
arial | Дата 19.1.2011, 9:14 |
при этом все колонки у обоих таблиц совпадают Если все колонки у обеих таблиц совпадают, то имеет смысл объединить их в одну таблицу и добавить колонку с идентификатором (id=1). |
|
Rosster | Дата 18.1.2011, 21:23 |
Можно ли в FROM записать какое-либо условие, например, если поле равно тому-то то выборка из такой таблицы,а если нет то из другой таблицы, что-то типа этого: FROM WHEN (id=1) table1 ELSE table2 при этом все колонки у обоих таблиц совпадают |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 28.3.2024, 14:28 |