Я использую 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.
РЕДАКТИРОВАНИЕ: в основном я хочу выбрать точный столбец питания, скажем, пользователь вводит b, а biryani находится в столбце «secondFood», поэтому я хочу выбрать этот столбец вдоль businessName и m.ownerid.
Я думаю, что вы хотите выбрать конкретный столбец через слово, например, пользовательский тип p и макароны в столбце с именем m.tenthFood, тогда вы хотите значение этого столбца и показать его на своем веб-сайте, если вы считаете, что это невозможно, потому что в подзапросе несколько Столбцы (результат) не могут прийти, поэтому ваш запрос не проходит здесь. Как вы сказали, что используете php pdo, это означает, что вы показываете это значение где-то, поэтому вам нужно выбрать все столбцы, а затем выполнить некоторую логику, чтобы удалить пустые или пустые столбцы, а затем показать только те столбцы, которые имеют pasta, pori, panir и т. Д. , Для этого вам нужен этот запрос.
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
Вы можете заменить выбор, используя 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