![]() |
|
Модераторы: skyboy |
![]()
|
|
| KonstRuctor |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Привет всем!
Есть три таблицы с одинаковой структурой. Мне нужно написать скрипт поиска по всем трем таблицам и вывести на экран результаты. Юзеру предлагается ввести ключевое слово и выбрать поле, по которому будет вестись поиск. Из формы по GET приходит $s -- ключевое слово и $where -- в каком поле хочет искать. Структура таблиц tb1, tb2, tb3:
Я пытаюсь сделать так:
И, понятное дело, получаю ошибку. Я хочу еще сделать грамотную сортировку по одному из полей, но мне пока хотя бы без сортировки разобраться. Эскейп-защиту пока опускаем для упрощения кода. Спасибо. |
||||
|
|||||
| muzer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 31.8.2006 Репутация: 30 Всего: 31 |
А как эти три таблицы взаимосвязаны между собой?
Если связаны, то для решения нужно знать как. Если не связаны, то решить можно, например, так:
|
|||
|
||||
| KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Работает! Спасибо!
(таблицы никак не связаны) Буду разбираться с сортировкой. Это сообщение отредактировал(а) KonstRuctor - 14.12.2006, 03:16 |
|||
|
||||
| KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Еще маленький вопросик по теме:
А если мне надо сперва посчитать $amount -- кол-во записей? При работе с одной таблицей я делаю так:
А как быть в случае с тремя таблицами? |
|||
|
||||
| Dremlin |
|
||||
|
Quo vadis? ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 21.9.2006 Где: Киев Репутация: нет Всего: 4 |
если SQL, то:
можно и в ПХП:
--------------------
Каждый дурак знает, что до звезд не достать, а умные, не обращая внимания на дураков, пытаются... |
||||
|
|||||
| muzer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 31.8.2006 Репутация: 30 Всего: 31 |
Dremlin, не надо так делать.
Если нам нужно только посчитать кол-во и больше ничего, т.е. сами данные не нужны, то и селектить их не нужно, это очень накладно.
а в программе считываем три строки и суммируем результат. |
|||
|
||||
| Dremlin |
|
|||
|
Quo vadis? ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 21.9.2006 Где: Киев Репутация: нет Всего: 4 |
muzer, справедливо.
--------------------
Каждый дурак знает, что до звезд не достать, а умные, не обращая внимания на дураков, пытаются... |
|||
|
||||
| KonstRuctor |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
muzer, если не сложно, можно подробнее, как это сделать правильно?
Я попробовал так:
и далее
И все работает. Но я не понял, как считывать три строки и суммировать результат. Поясню, зачем мне надо знать кол-во: 1) если 0, то выводим сообщение; 2) для постраничного вывода результатов. Спасибо! |
||||
|
|||||
| Akina |
|
||||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Если из каждой таблицы выбирается много записей, или если таблицы невелики, разумнее вместо
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||||
|
|||||||
| KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Akina, к сожалению, такой вариант вызывает ошибку:
....your MySQL server version for the right syntax to use near 'UNION tb2 UNION tb3 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result Пишу так:
У вас код получился красивый, но вот что-то не работает. Это сообщение отредактировал(а) KonstRuctor - 16.12.2006, 02:03 |
|||
|
||||
| KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
Добавлю вот еще что -- правильно* работает вот так:
Однако при больших объемах данных два таких запроса здорово загрузят сервер. Хотелось бы, конечно, научиться по-грамотному считать $amount. --------------------------------- * имею в виду, что результаты поиска соответствуют действительности. |
|||
|
||||
| Dremlin |
|
|||
|
Quo vadis? ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 21.9.2006 Где: Киев Репутация: нет Всего: 4 |
Снова вызывать тот же запрос не нужно, все данные и так уже получены!
Это сообщение отредактировал(а) Dremlin - 16.12.2006, 18:28 --------------------
Каждый дурак знает, что до звезд не достать, а умные, не обращая внимания на дураков, пытаются... |
|||
|
||||
| KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
А постраничный вывод как же?
Мне надо снова вызвать этот же запрос с LIMIT и так далее. Мне никак не разобраться, как получить ТОЛЬКО число записей. Как из одной таблицы -- я понимаю (см. мое сообщение выше) А как из трех -- не получается. |
|||
|
||||
| KonstRuctor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 245 Регистрация: 31.3.2006 Где: Россия, Санкт-Пет ербург Репутация: нет Всего: нет |
РЕШЕНИЕ:
Код получается длинный. Но все работает. В принципе, тема закрыта. Может, у кого есть еще какие мысли? Все большое спасибо! Это сообщение отредактировал(а) KonstRuctor - 17.12.2006, 02:00 |
|||
|
||||
| muzer |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 31.8.2006 Репутация: 30 Всего: 31 |
Akina, вы MySQL путаете с чем-то другим.
KonstRuctor, я на php не пишу. Но вам нужно элементарно считать три строки, которые вернёт
Если вы не умеете, то можно так:
Вернётся одна строка, сумма строк из трёх таблиц. Выполняться будет по времени столько же. |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |