Новый запрос в запросе 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"