Как искать несколько таблиц в базе данных MySQL для точного соответствия, используя PHP - PullRequest
1 голос
/ 29 ноября 2010

Вот структура таблицы

table : user
id
name
email
category

table 2 : body
id
uid
height
haircolor

Вот как я получаю доступ к данным из базы данных SELECT * FROM user WHERE category='paid' и с большим количеством кодов это работает.

То, что я хочу сделать, выглядит следующим образом (я допускаю сложный поиск)

Select * FROM user WHERE category='paid' body.height='5ft', body.haircolor='red' WHERE user.id=body.uid

Я знаю, что это утверждение неверно, но я хочу, чтобы база данных была доступна для поиска так, чтобы я мог выбрать цвет волос как красный, высота как 5 футов, и скрипт должен возвращать толькопользователи, рост которых 5 футов, а цвет волос - красный (точное совпадение)

Надеюсь, вы, ребята, поняли мой вопрос.

PS: Как вы видите, я использовал 2 таблицы, от 1 досохранить информацию о пользователе и 2, чтобы сохранить информацию о теле пользователя.Я могу интегрировать их в 1, но я хочу оставить все как есть.

Ответы [ 2 ]

2 голосов
/ 29 ноября 2010

Похоже, у вас возникла путаница из-за использования WHERE для обоих условий выбора, а также указания соединения между вашими двумя таблицами. Вот почему я предпочитаю сохранять соединения в явном виде, что даст вам такой запрос:

SELECT user.*
FROM user
JOIN body ON body.uid = user.id
WHERE body.height = '5ft'
    AND body.haircolor = 'red';

Итак, теперь вы разделили часть, соединяющую две таблицы, в раздел JOIN/ON, а WHERE включает только условия, сужающие поиск.

1 голос
/ 29 ноября 2010

Вы можете сделать что-то очень похожее на то, что вы делаете выше - вы просто используете несколько таблиц в своей конструкции FROM. Это отличный способ, когда вы хотите что-то вытащить быстро.

SELECT user.* FROM user, body 
    WHERE user.category = 'paid' 
    AND body.height = '5ft' 
    AND body.haircolor = 'red' 
    AND user.id = body.uid

Не забудьте указать SELECT в этом случае - все из таблицы user . Вы также можете сделать это с помощью JOIN, хотя у меня их фобия, поэтому я склонен использовать предыдущий метод.

SELECT * FROM user 
    WHERE user.category = 'paid' 
    AND body.height = '5ft' 
    AND body.haircolor = 'red'
    JOIN body ON user.id = body.uid

Это должно сработать! Как я уже сказал, я презираю использование JOIN, и первое должно быть абсолютно в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...