выберите один столбец, используя несколько как заявление в MySQL - PullRequest
0 голосов
/ 23 октября 2018

Я использую 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%')");

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

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.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Я думаю, что вы хотите выбрать конкретный столбец через слово, например, пользовательский тип 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

0 голосов
/ 23 октября 2018

Вы можете заменить выбор, используя 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
...