2014-10-21 2 views
0

Я присоединяюсь к 5 таблицам в vTiger, чтобы получить всю необходимую мне информацию. Однако есть опция, что некоторые столбцы будут пустыми. В этом случае моя инструкция SELECT терпит неудачу, и я не могу получить остальные результаты. Как обойти это, добавив значение «Не существует» по умолчанию, если столбец пуст?инструкция SELECT - игнорировать пустые столбцы - присоединившиеся таблицы

$results = mysql_query("SELECT 
    vtiger_potentialscf.potentialid, 
    vtiger_potential.potentialname, 
    vtiger_contactdetails.accountid, 
    vtiger_contactdetails.salutation, 
    vtiger_contactdetails.firstname, 
    vtiger_contactdetails.lastname, 
    vtiger_account.accountname, 
    vtiger_crmentity.smownerid, 
    vtiger_crmentity.crmid, 
    vtiger_crmentity.label, 
    vtiger_users.id, 
    vtiger_users.email1 

    FROM vtiger_potential 

    INNER JOIN vtiger_potentialscf ON vtiger_potentialscf.potentialid = vtiger_potential.potentialid 
    INNER JOIN vtiger_crmentity ON vtiger_potential.potentialid = vtiger_crmentity.crmid 
    INNER JOIN vtiger_users ON vtiger_crmentity.smownerid = vtiger_users.id 
    INNER JOIN vtiger_contactdetails ON vtiger_potential.related_to = vtiger_contactdetails.accountid 
    INNER JOIN vtiger_account ON vtiger_account.accountid = vtiger_potential.related_to 
    WHERE `cf_919` = DATE(NOW())"); 


while ($row = mysql_fetch_assoc($results)) { 
    echo $row['email1'] . "<br />"; 
    echo $row['smownerid'] . "<br />"; 
    echo $row['potentialname'] . "<br />"; 
    echo $row['accountid'] . "<br />"; 
    echo $row['salutation'] . "<br />"; 
    echo $row['firstname'] . "<br />"; 
    echo $row['lastname'] . "<br />"; 
    echo $row['accountname'] . "<br />"; 

В этом случае я могу иметь vtiger_contactdetails пусто. Любое предложение о том, как получить остальную часть контента и просто откликнуться, что они недоступны?

+0

Используйте левое соединение, если оно не существует. –

+0

Можете ли вы посоветовать, как? – GuitarMan

+1

В vtiger будет много связанных таблиц, где не будет данных. Например, в некоторых случаях, когда у вас нет настраиваемого поля для модуля, суффикс-таблицы scf не будут иметь никаких данных, поэтому внутреннее соединение ничего не вернет. Единственной таблицей, где будут данные, относящиеся к модулю, является 'vtiger_crmentity', поэтому я бы предложил использовать' left join' вместо 'INNER JOIN'. Вы можете сохранить внутреннее соединение с 'vtiger_users' AND' vtiger_crmentity' –

ответ

0

Вы можете использовать левое соединение. Посмотрите http://www.w3schools.com/sql/sql_join_left.asp

Спасибо Abhik Chakraborty за гораздо лучшее объяснение в комментариях.

+0

Это сработало. Любые советы о том, почему другой не работал? БЛАГОДАРЯ – GuitarMan

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