Новый запрос в запросе MySql на основе первоначального результата запроса

Я пытаюсь получить контактную информацию из одной таблицы ("SP_Cont"), а затем, на основе кода округа (CID), получить фактическое имя округа ("CTitle") из таблицы "Округа".

SELECT 
CONCAT_WS(', ',NULLIF(SP_Cont.Address1, ''),NULLIF(SP_Cont.Address2, ''),NULLIF(SP_Cont.Address3, ''),NULLIF(SP_Cont.Address4, ''),NULLIF(SP_Cont.Address5, ''),NULLIF(SP_Cont.City, ''),NULLIF(Postcode, '')) AS Address, SP_Cont.CID, SP_Cont.RevTot,
Counties.CTitle
FROM 
  SP_Cont
INNER JOIN
  Counties
ON
  Counties.CID=SP_Cont.CID
WHERE
  SP_Cont.SPCode = "26"

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

Адрес1, Адрес2, Адрес3, Город, Округ, Почтовый индекс.

Я знаю, что вышеупомянутое не сделает этого, но по крайней мере мне не нужно будет выполнять другой запрос на странице PHP, чтобы добавить округ, как я делаю в настоящее время:

if (!empty($BAPrint['CID'])) {
 $CQuery = mysql_query ("SELECT CTitle FROM Counties USE INDEX (CIDT) WHERE CID = ".$BAPrint['CID']);
  $CPrint = mysql_fetch_array ($CQuery);
  $Address .= ", ".$CPrint['CTitle'];
}

Так это будет выглядеть так:

Адрес1, Адрес2, Адрес3, Город, Почтовый индекс, Округ.

Есть ли способ получить желаемый формат адреса

Адрес1, Адрес2, Адрес3, Город, Округ, Почтовый индекс.?

Другая проблема заключается в том, что если SP_Cont не содержит код CID, то сценарий завершается ошибкой. Можно ли в любом случае использовать CONCAT_WS, если сценарий NULL CID выполняется, но без заголовка округа?

Приветствия G

1 ответ

nullif работает немного по-другому http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

SELECT 
CONCAT_WS(', ',
  nullif(SP_Cont.Address1, ''),
  nullif(SP_Cont.Address2, ''),
  nullif(SP_Cont.Address3, ''),
  nullif(SP_Cont.Address4, ''),
  nullif(SP_Cont.Address5, ''),
  nullif(SP_Cont.City, ''),
  nullif(Counties.CTitle, '')
  nullif(Postcode, '')
) AS Address, 

SP_Cont.CID, SP_Cont.RevTot


FROM  SP_Cont
LEFT JOIN Counties
ON Counties.CID=SP_Cont.CID

WHERE SP_Cont.SPCode = "26"
Другие вопросы по тегам