| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Выборка из 2 похожих таблиц |
| Автор: dimes 9.11.2004, 18:45 |
| Есть 2 таблици tab_1 и tab_2 они практически индентичны т.е. имеются много схожих полей(по имени, по типу и по смысловой нагрузки) например tab_1 содержит: date sum 2004-11-01 2 2004-11-03 3 2004-11-04 6 tab_2 содержит: date sum 2004-11-02 1 2004-11-04 4 2004-11-05 3 как видно значения могут отсутствовать как в первой таблице так и во второй нужен запрос чтобы получить: 2004-11-01 2 2004-11-02 1 2004-11-03 7 2004-11-04 10 2004-11-05 3 сейчас я делаю отдельные запросы для каждой таблицы, сразу загоняя ответы во временную таблицу, потом делаю выборку(уже из временной таблици) с групировкой и сортировкой. можно ли тоже самое реализовать одним запросом(желательно чтобы это было не медленее чем мой вариант заранее благодарен и еще версия mySQL 3.23 |
| Автор: Ignat 9.11.2004, 18:59 | ||
Если я тебя правильно понял, вот так:
PS: Предикаты и сортировку ставь свои. PPS: Имена полей и их порядок в первом и втором селекте должны быть идентичны (либо NULL). |
| Автор: dimes 9.11.2004, 19:02 | ||
| Ignat спасибо только я забыл версию написать, извините
к сожелению |
| Автор: Ignat 9.11.2004, 19:09 |
| Тогда сделай два селекта, а массивы слей вместе в клиенте. |
| Автор: Akina 9.11.2004, 19:21 |
| dimes Тогда может сделать одну таблицу вместо двух? добавить поле "опознания", если опознать по остальным полям невозможно... |
| Автор: dimes 9.11.2004, 19:27 | ||||
| спасибо, этого я и боялся... похоже придется остановится на варианте со временной таблицей Добавлено @ 19:33
к сожелению нельзя
а поподробнее можно? |
| Автор: Akina 9.11.2004, 19:56 |
| dimes Можно и поподробнее... Скажем есть 2 таблицы. Имена полей не важны, потому именуем по подобию: Table1: Field1 Field2 Field3 Table2: Field1 Field4 Field5 Т.е. есть поле Field1, которое смысловО одинаково для обоих таблиц (может в макетах обозвано по-разному, но это мелочи), и есть поля Field2-5, причем поля 2 и 4 одного типа (скажем длинное целое), а 3 и 5 - разных и уникальных (скажем string и double). Возможны объединения: 1) Table12 Field1 Field2 Field3 Field4 Field5 Принадлежность к таблице четко определяется пустотой значений полей. 2) Table12 Field1 Field24 Field3 Field5 Принадлежность к таблице и контент Field24 четко определяется пустотой значений полей 3 или 5. Если же все поля смысловО соответственны или хотя бы типовО соответственны (т.е. 3 и 5 тоже одного типа), то возможно объединение: 3) Table12 Field1 Field24 Field35 TableNum Соответственно принадлежность к таблице и контент Field24 и Field35 четко определяетсязначением поля TableNum. Отбор монотабличных данных производится чуть более длинным условием (скажем для варианта 2 при выборке данных, относящихся только к таблице 1 это будет WHERE (то_что_было) AND Field3 NOT Null), зато упрощается отбор совокупных данных... PS. Я так понимаю что хостинг - чужой, и версию MySQL не проапдейтить... |