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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка из двух таблиц 
:(
    Опции темы
chiffa
Дата 2.9.2010, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем добрый день. Такой вопрос:
Есть 2 таблицы в Мускуле.
Таблица №1:
Name    id
Таблица №1:
Musik_like user_id id


В таблицах много записей. Мне необходимо выбрать всех Саш, которые любят музыку РОК. Думал сделать запрос к таблице №1 LIKE %Саша%

получить перечень `id` и потом составить запрос к Таблице №2 типа `Musik_like` LIKE 'Rock' and `user_id` = $table_1 [0]->id and `user_id` = $table_1 [1]->id and `user_id` = $table_1 [3]->id......`user_id` = $table_1 [дохрена]->id

но понимаю это неправильно. Прошу совета как правильно реализовать подобный алгоритм поиска? Заранее спасибо за совет


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


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



таблица стилей(id_стиль + название_стиля) + таблица пользователей(id_пользователя + имя_пользователя + полное_имя) + таблица предпочтений(id_пользователя + id_стиля)
тогда запрос выглядит так:
Код

select пользователи.полное_имя
from предпочтения
inner join стили
on стили.id_стиля = предпочтения.id_стиля
inner join пользователи
on пользователи.id_пользователя = предпочтения.id_пользователя
where стили.название_стиля = "рок" and пользователи.имя_пользователя = "Александр"

обращаю внимание на идею хранить "нормализованное имя". Т.е. один ввел свое имя как "Шурик", другой - "Санек", третий - "Саша". А у тебя есть список соответствий и функция, которая весь этот зоопарк приводит к одной из возможных форм. И при поиске та же функция используется. И ищущий "Шурика" будет находить и "Александра" и "Сашу"
PM MAIL   Вверх
chiffa
Дата 3.9.2010, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо за ответ и за совет с именами! Тоесть

таблица стилей - 
1 РОК
2 РОК
3 ПОПСА
4 РЭП

а 

таблица предпочтений 
user_id id_style

я правильно понял?
PM MAIL   Вверх
skyboy
Дата 7.9.2010, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(chiffa @  2.9.2010,  23:04 Найти цитируемый пост)
я правильно понял? 

"правильно" или "не правильно" сказать не могу.
а вот с тем, что я предлагал, совпадает, да.
PM MAIL   Вверх
chiffa
Дата 10.9.2010, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А если я использую классы, то как сделать вывод поля, если имена совпадают в обоих таблицах?...

echo $user_tabl [0]->table2.name - выводит ошибку - Notice: Use of undefined constant name - assumed 'name'  и просто слово 'name'

echo $user_tabl [0]->name - возвращает данные первой таблицы.

сам запрос в упрашенном виде: 
Код

SELECT * FROM user inner join user_table on user_table.user_id = user.id

PM MAIL   Вверх
skyboy
Дата 10.9.2010, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(chiffa @  10.9.2010,  11:02 Найти цитируемый пост)
А если я использую классы, то как сделать вывод поля, если имена совпадают в обоих таблицах?...
какие классы, кто их видел?
Цитата(chiffa @  10.9.2010,  11:02 Найти цитируемый пост)
echo $user_tabl [0]->table2.name

точка здесь для чего? ты точно конкатенацию строк $user_tabl [0]->table2 и константы name делать собирался? 
PM MAIL   Вверх
chiffa
Дата 10.9.2010, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



хорошо, а как мне обратится к конкретной таблице, к определенной строке?...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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