2012-01-04 2 views
2

Ahoy all! Короче говоря, с этим, если вы не против раздавать руку этому новичку PHPer. :)PHP: делать ORDER BY с использованием внешних данных?

У меня есть поле базы данных под названием «Категории», который эта хранимая:

Fruit, People, Place, Animals, Landscape 

У меня также есть отдельная таблица в БД, которая имеет элементы с этими именами категории в полях для каждого элемента. Прямо сейчас, сценарий (я пытаюсь его немного разветвить) использует:

SELECT DISTINCT(type), type FROM the_categories ORDER BY type ASC 

для отображения списка всех доступных категорий. Достаточно просто?

Welllllll ..... Я не хочу сортировать по ASC, я хочу сортировать по списку предметов в первом поле Категории, о котором я упоминал. Независимо от того, в каком порядке они находятся, я хочу отобразить «типы» выше.

Очевидно, что мне нужно будет взорвать запятую и, возможно, дать им 1 в любой порядок .... но даже тогда .... как мне сделать «orderby», используя данные, хранящиеся в другой папке ?

Возможно ли это? lol Еще раз спасибо!

+0

Предполагая, что поле категории находится в одной таблице с каждой строкой, просто измените конец на 'ORDER BY categories' – Grexis

ответ

2
... ORDER BY FIELD(type,"Fruit","People","Place","Animals","Landscape") 

http://www.cfdan.com/posts/Handy_MySQL_-_ORDER_BY_FIELD.cfm

+0

'DISTINCT (тип), тип' не имеет смысла – zerkms

+0

Да, согласен. Я просто скопировал и наклеил остальную часть своего кода - свою ошибку. Я удалю этот раздел и оставлю остаток для справки. –

+0

упс, пропустил, что этот код был взят из оригинального вопроса, извините – zerkms

0

И только так и будущие зрители должны это .... вот взорвется код

$query2 = mysql_query("SELECT * FROM categorytable"); 
     while($row = mysql_fetch_array($query2)){ 
      $categories = html_entity_decode($row['categories']); 
      $thelist = explode(',', $categories); 

     foreach($thelist as $order){ 
      if(trim($order) != ''){ 
       $order = trim($order); 
       $order = ", '".$order."'"; 
       $theorder .= $order; 
      } 
     } 

, а затем для запроса, просто положить в порядке переменной

SELECT DISTINCT(type), type FROM the_categories ORDER BY FIELD(type" . $theorder .")") 

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

  • Нет связанных вопросов^_^