Соединить две строки из одной таблицы - PullRequest
4 голосов
/ 27 июля 2011

У меня сейчас есть такой запрос:

SELECT 
  topic.content_id, 
  topic.title, 
  image.location 
FROM 
  mps_contents AS topic 
  INNER JOIN mps_contents as image 
    ON topic.content_id = image.page_id 
WHERE 
  topic.page_id = (SELECT page_id FROM mps_pages WHERE page_short_name = 'foo' ) 
  AND image.display_order = '1'

Это потому, что я хочу объединить две строки из одной таблицы в одну строку.Это упрощенная настройка таблицы

-----------------------------------------------------------
| page_id | content_id | title | location | display_order |
-----------------------------------------------------------
|    1    |     200    |  Foo  |   NULL   |     200       |
|   200   |     201    |  Bar  | jpg.jpg  |      1        |
-----------------------------------------------------------

И, в принципе, я хочу получить этот результат

---------------------------------
| content_id | title | location |
---------------------------------
|     200    |  Foo  | jpg.jpg  |
---------------------------------

Итак, Foo - это 200-я тема на странице 1 (Foo рассматривается какподстраница и все ее содержимое хранятся в одной и той же таблице), а Bar - это ее рекомендуемое изображение (показывается только потому, что это 1-е изображение)

Приведенный выше запрос эффективно объединяет две строки (возвращает желаемоерезультат), но также возвращает дополнительную строку, соответствующую исходной строке для Foo, то есть местоположение имеет значение NULL.

Я надеюсь, что кто-то может помочь мне предотвратить запрос этой строки на возврат.

1 Ответ

1 голос
/ 27 июля 2011

WHERE ... AND location IS NOT NULL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...