Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

Народное голосование ПРЕМИИ РУНЕТА-2007!
Голосуем за RusFAQ.ru >>

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 308
от 20.11.2007, 10:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 453, Экспертов: 58
В номере:Вопросов: 1, Ответов: 2


Вопрос № 109474: Добрый день уважаемые эксперты. Вопрос в догонку темы. Для двух таблиц (В приложении) делаю запрос: $query = "CREATE VIEW Resulttable AS SELECT * FROM nas WHERE ls ='$_POST[ls]' AND data BETWEEN '$_POST[date1]' AND '$_POST[date3...

Вопрос № 109.474
Добрый день уважаемые эксперты. Вопрос в догонку темы. Для двух таблиц (В приложении) делаю запрос:
$query = "CREATE VIEW Resulttable
AS
SELECT * FROM nas WHERE ls ='$_POST[ls]' AND data BETWEEN '$_POST[date1]' AND '$_POST[date3]'
UNION ALL
SELECT * FROM lgot WHERE ls_lg ='$_POST[ls]' AND data_lg BETWEEN '$_POST[date1]' AND '$_POST[date3]'";

mysql_query($query) or die(mysql_error());
$result1 = mysql_query("SELECT * FROM Resulttable") or die(mysql_error());
mysql_query("DROP VIEW Resulttable") or die(mysql_error());

Все замечательно работает, но есть только одно немаловажное "НО". При выборке данных если скажем $_POST[ls]='10010010' (т.е.

данные присутствуют ТОЛЬКО в одной таблице), то выборка следующая:
Array (
[0] => Array [1] => Array
([nas_id] => 1 ([nas_id] => 2
[ls] => 10010010 [ls] => 10010010
[data] => 2007-01-01 [data] => 2007-02-01
[sum] => 121) [sum] => 121)
)
Вроде все нормально и такой результат меня устраивает.

А вот если $_POST[ls]='10010060' (т.е. данные присутствуют уже в двух таблицах), то выборка получается уже следующая:
Array (
[0] => Array [1] => Array
([nas_id] => 7 ([nas_id] => 8
[ls] => 10010060 [ls] => 10010060
[data] => 2007-01-01 [data] => 2007-02-01
[sum] => 95.48) [sum] => 121)

[2] => Array [3] => Array
([nas_id] => 1 ([nas_id] => 2
[ls] => 10010060 [ls] => 10010060
[data] => 2007-01-01 [data] => 2007-02-01
[sum] => 47.74) [sum] => 60.5)
)
Т.Е. для элементов [2] и [3] массива Array индексы такие же как и для элементов [0] и [1], хотя элементы 2 и 3 выбраны из

Таблицы2. То есть я не могу увидеть из какой таблицы результат попала в выборку. И отсюда вытекает вопрос: Каким образом мне

можно организовать запрос, чтобы в результате выборки индексы элементов массива Array соответствовали индексам той таблицы

откуда они получены. Думаю вопрос понятен. Заранее спасибо.

Приложение:

Отправлен: 15.11.2007, 03:23
Вопрос задал: Савченко И.В. (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Flynn
Здравствуйте, Савченко И.В.!
Не совсемпонял что именно вам хочется получить с индексами, но для варианта разных таблиц вам надо ввести еще один элемент, который для каждой таблицы был бы разным. Делается это так (дату я убрал :) )

SELECT N.*, "nas" as table_name FROM nas N WHERE ls ='10010060'
UNION ALL
SELECT L.*, "lgot" as table_name FROM lgot L WHERE lgot_ls ='10010060'

После данного запроса у вас появится дополнительнsq ряд в котором будет отображаться из какой таблицы выбран данный элемент.
Ответ отправил: Flynn (статус: 8-ой класс)
Ответ отправлен: 15.11.2007, 10:50

Отвечает: Зиновьев Дмитрий Владимирович
Здравствуйте, Савченко И.В.!
А не сильно ли вам помешает, если вы переделаете следующим образом:
$query = "CREATE VIEW Resulttable
AS
SELECT 'nas', * FROM nas WHERE ls ='$_POST[ls]' AND data BETWEEN '$_POST[date1]' AND '$_POST[date3]'
UNION ALL
SELECT 'lgot', * FROM lgot WHERE ls_lg ='$_POST[ls]' AND data_lg BETWEEN '$_POST[date1]' AND '$_POST[date3]'";

То есть добавите поле "имя таблицы"
Ответ отправил: Зиновьев Дмитрий Владимирович (статус: 6-ой класс)
Ответ отправлен: 15.11.2007, 13:38


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.62.1 от 14.11.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное