Я использую php pdo и mysql, я хочу выбрать еще один столбец, используя оператор like. в настоящее время у меня есть этот запрос. И этот запрос работает нормально.

$get_name = $db->prepare("SELECT dou.businessName, m.ownerid FROM dineOwnerUser AS dou INNER JOIN menu AS m ON dou.id = m.ownerid WHERE
(m.firstFood LIKE '%$text%'
OR m.secondFood LIKE '%$text%'
OR m.thirdFood LIKE '%$text%'
OR m.fourthFood LIKE '%$text%'
OR m.fifthFood LIKE '%$text%'
OR m.sixthFood LIKE '%$text%'
OR m.seventhFood LIKE '%$text%'
OR m.eightFood LIKE '%$text%'
OR m.ninthFood LIKE '%$text%'
OR m.tenthFood LIKE '%$text%')");

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

SELECT dou.businessName , m.ownerid,
(m.firstFood LIKE '%$text%'
OR m.secondFood LIKE '%$text%'
OR m.thirdFood LIKE '%$text%'
OR m.fourthFood LIKE '%$text%'
OR m.fifthFood LIKE '%$text%'
OR m.sixthFood LIKE '%$text%'
OR m.seventhFood LIKE '%$text%'
OR m.eightFood LIKE '%$text%'
OR m.ninthFood LIKE '%$text%'
OR m.tenthFood LIKE '%$text%') FROM dineOwnerUser AS dou INNER JOIN menu AS m ON m.ownerid = dou.id WHERE
(m.firstFood LIKE '%$text%'
OR m.secondFood LIKE '%$text%'
OR m.thirdFood LIKE '%$text%'
OR m.fourthFood LIKE '%$text%'
OR m.fifthFood LIKE '%$text%'
OR m.sixthFood LIKE '%$text%'
OR m.seventhFood LIKE '%$text%'
OR m.eightFood LIKE '%$text%'
OR m.ninthFood LIKE '%$text%'
OR m.tenthFood LIKE '%$text%')

Но не выбирает нужный столбец. ПРИМЕЧАНИЕ: «% text%» поступает из поля ввода формы, и все работает идеально, мне просто нужен правильный запрос mysql.

EDITED: в основном я хочу выбрать точный столбец еды, скажем, пользователь вводит b, а biryani находится в столбце «secondFood», поэтому я хочу выбрать этот столбец по businessName и m.ownerid.

-1
rimsha 23 Окт 2018 в 07:38

2 ответа

Лучший ответ

Я думаю, вы хотите выбрать конкретный столбец с помощью слова, например, пользовательский тип p и макароны находятся в столбце с именем m.tenthFood, тогда вам нужно значение этого столбца и показать его на своем веб-сайте, если вы думаете, что это невозможно, потому что в подзапросе несколько столбцы (результат) не могут прийти, поэтому ваш запрос здесь не выполняется. Как вы сказали, вы используете php pdo, это означает, что вы где-то показываете это значение, поэтому вам нужно выбрать все столбцы, а затем выполнить некоторую логику, чтобы удалить нулевые или пустые столбцы, а затем показать только те столбцы, в которых есть макароны, пори, панир и т. Д. , Для этого вам понадобится этот запрос.

    SELECT dou.businessName , m.ownerid, IF (m.firstFood LIKE '%r%', m.firstFood, "no")
, IF (m.secondFood LIKE '%r%', m.secondFood, "no")
, IF (m.thirdFood LIKE '%r%', m.thirdFood, "no")
, IF (m.fourthFood LIKE '%r%', m.fourthFood, "no")
, IF (m.fifthFood LIKE '%r%', m.fifthFood, "no")
, IF (m.sixthFood LIKE '%r%', m.sixthFood, "no")
, IF (m.seventhFood LIKE '%r%', m.seventhFood, "no")
, IF (m.eightFood LIKE '%r%', m.eightFood, "no")
, IF (m.ninthFood LIKE '%r%', m.ninthFood, "no")
, IF (m.tenthFood LIKE '%r%', m.tenthFood, "no")
FROM dineOwnerUser AS dou INNER JOIN menu AS m ON m.ownerid = dou.id WHERE
(m.firstFood LIKE '%r%'
OR m.secondFood LIKE '%r%'
OR m.thirdFood LIKE '%r%'
OR m.fourthFood LIKE '%r%'
OR m.fifthFood LIKE '%r%'
OR m.sixthFood LIKE '%r%'
OR m.seventhFood LIKE '%r%'
OR m.eightFood LIKE '%r%'
OR m.ninthFood LIKE '%r%'
OR m.tenthFood LIKE '%r%')

Объяснение: ПОСЛЕ предложения WHERE это называется подзапросом, и он вернет только один ответ (на обычном языке), поэтому вы проверяете, в каком столбце есть что-то, содержащее «P», тогда вы берете идентификатор владельца, название компании и все столбцы еды. В верхней части, содержащей оператор IF, он вернет значение столбца, если он не содержит, он вернет «нет». Используя условия, вы можете игнорировать эти столбцы и отображать только те столбцы, которые вам нужны, например, макароны, панир ... Надеюсь, это сработает для вас. Cheersss

0
haider 23 Окт 2018 в 06:09

Вы можете заменить выбор с помощью IF или CASE, но запрос может быть уродливым

IF (m.firstFood IS NOT NULL, CONCAT('firstFood:', m.firstFood), 
  IF (m.secondFood IS NOT NULL, CONCAT('secondFood:', m.secondFood),
    IF (m.thirdFood IS NOT NULL, CONCAT('thirdFood:', m.thirdFood),
      IF (m.fourthFood IS NOT NULL, CONCAT('fourthFood :', m.fourthFood ),
...................................
)))) as thirdColumn
0
Raymond Tey 23 Окт 2018 в 05:40
52941261