2016-01-19 2 views
1

Поэтому у меня есть запрос SQLзаказа Использование нескольких строк, действующих как один

$choice = mysqli_real_escape_string($con,$_POST['choice']); 

    if($option == "Name") 
    $searchresult = "SELECT id, stationname1, stationinfo1, stationprice1, image1, stationname2, stationinfo2, 
    stationprice2, image2, stationname3, stationinfo3, stationprice3, image3, stationname4, stationinfo4, stationprice4, 
    image4 FROM fuel WHERE stationlocation1 LIKE '%" . $location . "%' ORDER BY stationname1 $choice"; //search database 

который получает данные и организует его по имени станции 1. Проблема в том, что у меня есть stationnames 1 - 4, которые я хотел бы порядок, чтобы все имена были в алфавитном порядке независимо от столбца. Я знаю, что использование

ORDER BY stationname1 ASC, stationname2 ASC, stationname3 ASC, stationname4 ASC 

не будет работать, поскольку он заказывает их отдельно. Пожалуйста, что мне делать, чтобы заказать их вместе?

В основном что-то в виде

ORDER BY stationname1 and stationname2 and stationname3 and stationname4 ASC 

, например ... глядя на эту базу данных pic, я хотел бы, чтобы показать:

  • another_one
  • нннн
  • ordinarytest
  • zgkgkgkkg

в этом порядке

Любая помощь будет оценена по достоинству. Спасибо.

+0

Вопрос имеет смысл, если «stationname [1 | 2 | 3 | 4]» были значениями 'stationname'; вам необходимо предоставить дополнительную информацию о ваших данных. Прямо сейчас я ** угадываю ** [COALESCE] (http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_coalesce) - это то, что вы ищете. _It также непонятно, что вы подразумеваете под «несколькими строками, действующими как один», вы имели в виду поля? _ – Uueerdo

+0

Похоже, вам нужен 'CASE' в вашем заказе, но без выборочных данных и желаемого результата очень сложно обеспечить более детальное решение. –

+0

Спасибо за быстрый ответ. Я улучшил вопрос, если это поможет. –

ответ

0

Как говорили другие, вы действительно должны нормализовать свои данные, чтобы эффективно не иметь 4 строки данных по фактической строке; но это должно получить, что вы хотите (и может быть путь к нормализации данных):

SELECT id, stationname1 AS stationname, stationinfo1, stationprice1, image1 
FROM fuel 
WHERE stationlocation1 LIKE '%" . $location . "%' 
UNION 
SELECT id, stationname2 AS stationname, stationinfo2, stationprice2, image2 
FROM fuel 
WHERE stationlocation2 LIKE '%" . $location . "%' 
UNION 
SELECT id, stationname3 AS stationname, stationinfo3, stationprice3, image3 
FROM fuel 
WHERE stationlocation3 LIKE '%" . $location . "%' 
UNION 
SELECT id, stationname4 AS stationname, stationinfo4, stationprice4, image4 
FROM fuel 
WHERE stationlocation4 LIKE '%" . $location . "%' 
ORDER BY stationname $choice; 

Окончательный ORDER BY положение о UNION относится ко всему UNION, если скобка сила не может быть иной.

+0

Это работает как шарм. спасибо –

Смежные вопросы