Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: выборка из нескольких одинаковых таблиц
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » выборка из нескольких одинаковых таблиц

Страниц (1): [1]
 

1. integer - 07 Ноября, 2013 - 20:35:48 - перейти к сообщению
структура таблиц одинаковая
сейчас сделано так:
SELECT * FROM `данные1` WHERE `data` LIKE '%http%' UNION ALL
SELECT * FROM `данные2` WHERE `data` LIKE '%http%' UNION ALL
SELECT * FROM `данные3` WHERE `data` LIKE '%http%' ORDER BY `юзер` , `время`
пытаюсь переделать так
SELECT * FROM `данные1`,`данные2`,`данные3` WHERE `data` LIKE '%http%' ORDER BY `юзер` , `время`
получаю ошибку
Column 'data' in where clause is ambiguous
думаю что от меня хотят название определенной таблицы, как указать для всех таблиц ?
2. teddy - 07 Ноября, 2013 - 20:37:39 - перейти к сообщению
ORDER BY tablename.время
3. integer - 07 Ноября, 2013 - 20:52:35 - перейти к сообщению
teddy пишет:
ORDER BY tablename.время

чтото не пойму как указать сразу для всех таблиц ? можно весь запрос ?
или нужно по одной указывать ? или лучше оставить как есть с UNION ALL ?
4. teddy - 07 Ноября, 2013 - 21:08:01 - перейти к сообщению
ошибка происходит потому, что сервер MySQL не понимает как сортировать результат запроса. Он говорит, у вас в нескольких таблицах есть поле data, вопрос, по какой дате сортировать? Улыбка Поэтому нужно выбрать таблицу, по дате которой нужно отсортировать результат(помоему если перечислите через запятую несколько таблиц то вес будет иметь только последняя, поэтому лучше написать одну)

По поводу запроса, если честно я в него не вникал Улыбка Я не знаю что вам нужно, прочитал ошибку которую вы получаете и решил разъяснить её причину
5. Panoptik - 07 Ноября, 2013 - 21:30:05 - перейти к сообщению
сервер не понимает выражение Where data, так как data имеется сразу в трех таблицах и он не знает какую из них брать

то что вы хотите сделать без указания имени таблиц не получится

нужно обязательно указывать имя таблиц для повторяющихся столбцов
CODE (SQL):
скопировать код в буфер обмена
  1. WHERE tablename.DATALIKE '%something%' OR tablename2.DATALIKE '%something%'

 

Powered by ExBB FM 1.0 RC1