MySQL выбрать с несколькими таблицами и гибкий вывод - PullRequest
1 голос
/ 06 февраля 2010

выберите около трех таблиц, где каждая таблица имеет разные поля. Один может иметь поле «заголовок», другой - нет, но иметь поле «местоположение». Теперь я хочу получить общий вывод этих трех таблиц, и каждая строка должна иметь заголовок. для таблиц, у которых в выводе есть поле «заголовок», заголовок должен исходить из поля «заголовок», но если в таблице нет «заголовка», но есть «местоположение», заголовок в выводе должен исходить из поля «местоположение». В обычном цикле while это будет выглядеть так:

while ($row = mysql_fetch_array($result)) {
   $marker['###TITEL###'] = $row['title']; 
}

Теперь я хочу иметь «гибкую» строку $ ['Flexible']. Таким образом, если поле "title" существует, оно должно быть $ row ['title'], если оно не существует, но "location, это должно быть $ row ['location'].

У кого-нибудь есть идеи, как это решить?

С уважением, Мащек

Ответы [ 2 ]

2 голосов
/ 06 февраля 2010

Используйте UNION для объединения результатов из всех таблиц, псевдоним поля как гибкого, тогда набор результатов будет содержать столбец flexible .

SELECT title AS flexible, field2, field3 FROM a
UNION
SELECT location AS flexible, field2, field3 FROM b
0 голосов
/ 06 февраля 2010

Вот как бы я это сделал:

while (list($title, $location, $other) = mysql_fetch_array($result)) {
    if (!empty($title)) {
       $row['title'] = $title;
    } else if (!empty($location)) {
       $row['title'] = $location;
    } else {
       $row['title'] = $other;
    }
}

Извините, если синтаксис не на 100% правильный. Я долго не пишу в php.

Кроме того, переменная, которую я назвал $ row, будет той, которую вы назвали $ marker в своем вопросе.

...