Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL запрос, как правильно сделать? 
:(
    Опции темы
APro
Дата 3.2.2009, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 328
Регистрация: 5.12.2006

Репутация: 1
Всего: 1



Представьте себе такую ситуацию: есть 2 таблицы, к примеру name и lastname, в каждой таблицы только два поля id и text. id первой тиблицы соответствует id'у второй. А как можно получить результат выполнив 1 запрос? или очень компактный запрос, если одним не получится!

(я сделал, но у меня очень немаленький код получися)

P.S.: Этот пример на ходу придумал... так что не ругать, типа всё в одну таблицу можно... их должно быть 2!


--------------------
Никогда не спорь с дураком, другие могут не заметить между вами разницы.
Чем реже открываешь рот, тем меньше слышишь глупостей.
PM MAIL WWW ICQ   Вверх
bars80080
Дата 3.2.2009, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



а смысл в двух в таблицах?
PM MAIL WWW   Вверх
ksnk
Дата 3.2.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Сходить и почитать какой-нибудь учебник по реляционным базам...
Код

select `name`.id,`name`.text, `lastname`.text from `name` join `lastname` on `name`.id=`lastname`.id ;



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
APro
Дата 3.2.2009, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 328
Регистрация: 5.12.2006

Репутация: 1
Всего: 1



Цитата

а смысл в двух в таблицах?

Там немного дело в другом, но смылс такой:
например если я найду фамилию, я получу id, а по нашёдшему иду найду имя, а нужно это собрать в одну кучу, чтобы я нашёл фамилию, и сразу же имя, но это опять же пример только, так как в таблицах совершенно другое!!!


--------------------
Никогда не спорь с дураком, другие могут не заметить между вами разницы.
Чем реже открываешь рот, тем меньше слышишь глупостей.
PM MAIL WWW ICQ   Вверх
bars80080
Дата 3.2.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(APro @  3.2.2009,  20:43 Найти цитируемый пост)
например если я найду фамилию, я получу id, а по нашёдшему иду найду имя, а нужно это собрать в одну кучу, чтобы я нашёл фамилию, и сразу же имя

опять не увидел смысла. почему не сделать всё в одной таблице?


Цитата(APro @  3.2.2009,  20:43 Найти цитируемый пост)
это опять же пример только, так как в таблицах совершенно другое

и это самое плохое, что вы спрашивая ставите одни условия, а результат хотите получить для других

если объяснить толком, возможно удастся найти более подходящее решение
PM MAIL WWW   Вверх
APro
Дата 3.2.2009, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 328
Регистрация: 5.12.2006

Репутация: 1
Всего: 1



В общем дело так. У меня скрипт выводит статью, которую берёт из таблицы, и у неё есть ID. Есть ещё таблица с ключевыми словами, и у каждого слова тоже есть ID. Есть смежная таблица, где ID статьи и ID ключевого слова. (то есть к каждой статье по несколько ключевых слов). А я вывожу результат так: Пользователь вбивает слово в поиске и оно ищеться в базе с Ключевыми словами, я получаю ID этого слова, после я ищу в смежной таблице к какой страницы относится этот ID и вывожу уже текст. Проблема в том что получается не очень маленький код, а я пытаюсь его сократить в несколько раз, но не совем нахожу верного способа!!!


--------------------
Никогда не спорь с дураком, другие могут не заметить между вами разницы.
Чем реже открываешь рот, тем меньше слышишь глупостей.
PM MAIL WWW ICQ   Вверх
APro
Дата 3.2.2009, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 328
Регистрация: 5.12.2006

Репутация: 1
Всего: 1



если я делаю что-то не правильно, предложите что-нибудь другое smile


--------------------
Никогда не спорь с дураком, другие могут не заметить между вами разницы.
Чем реже открываешь рот, тем меньше слышишь глупостей.
PM MAIL WWW ICQ   Вверх
bars80080
Дата 3.2.2009, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



вот, оказывается таблиц даже три.

вопрос такой, как осуществляется поиск? простым сравниванием where `word`='$search' или как-то иначе? типа where word like "%$search%"?


PM MAIL WWW   Вверх
APro
Дата 3.2.2009, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 328
Регистрация: 5.12.2006

Репутация: 1
Всего: 1



второй способ: типа where word like "%$search%"?


--------------------
Никогда не спорь с дураком, другие могут не заметить между вами разницы.
Чем реже открываешь рот, тем меньше слышишь глупостей.
PM MAIL WWW ICQ   Вверх
bars80080
Дата 4.2.2009, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



в таком случае, как бы я сделал.

сделал всего одну таблицу, где поиск будет производится прямо в поле article, содержащем полностью статью
это если статей не очень много
если же поиск существенно напрягает систему, то ввёл бы дополнительное поле keywords, в которое через запятую перечислил ключевые слова, и искал бы уже среди них

имхо.


однако, если всё же нужны эти три таблицы, то ksnk уже показал, как их объединять. осталось добавить ещё одну таблицу
PM MAIL WWW   Вверх
APro
Дата 4.2.2009, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 328
Регистрация: 5.12.2006

Репутация: 1
Всего: 1



Цитата(bars80080 @  4.2.2009,  00:03 Найти цитируемый пост)
дополнительное поле keywords, в которое через запятую перечислил ключевые слова

ммм... я об этом как-то думал, но почему то всё же не решился! Мне показалось что так не делается! А можно прямо через запятую искать? (прямо в таблице) или делать explode или ещё что-нить?


--------------------
Никогда не спорь с дураком, другие могут не заметить между вами разницы.
Чем реже открываешь рот, тем меньше слышишь глупостей.
PM MAIL WWW ICQ   Вверх
ksnk
Дата 4.2.2009, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



APro, Есть еще и FULLTEXT - специальная заточка под текстовый поиск в больших тестовых полях.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
bars80080
Дата 4.2.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(APro @  4.2.2009,  06:42 Найти цитируемый пост)
А можно прямо через запятую искать?

в смысле?
like "%слов%"  найдёт в 'первый, второй, пословица, третий' без всяких дополнительных манипуляций
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.