2016-08-04 2 views
0

Что я делал неправильно. Он ничего не слышит. Ожидаемый результат - яблоко и груша с val good и 0. Сначала я получаю все фрукты с ценой 4 на table_1, затем присоединяюсь к таблице_2, исключая любую метку фрукта = 4, исключаю банан, затем присоединяюсь к таблице_3, получаю val, если коэффициент соответствия 56, поэтому совпадение яблока и коэффициент груши не совпадают, поэтому возвращаем 0. Но мой код ничего не слышит, не видит ошибки, а просто ничего не слышит. соединение трех таблиц mysql php, но ничего эха ничего

/* 
 
table_1 
 
fruit price 
 
apple 4 
 
apple 5 
 
banana 4 
 
banana 5 
 
pear 4 
 

 
table_2 
 
fruit mark 
 
apple 5 
 
apple 6 
 
banana 4 
 
banana 7 
 
pear  6 
 

 
table_3 
 
fruit factor val 
 
apple 56  good 
 
apple 60  OK 
 
banana 89  good 
 
banana 90  good 
 
pear  56  bad 
 
*/ 
 
$pri=4; 
 
$sql = $wpdb->get_results($wpdb->prepare(" 
 
\t \t \t \t SELECT 
 
\t \t \t \t b.fruit,c.val 
 
\t \t \t \t FROM table_1 a, 
 
\t \t \t \t LEFT JOIN table_2 b 
 
\t \t \t \t ON b.fruit=a.fruit and b.mark != '4' 
 
\t \t \t \t LEFT JOIN table_3 c 
 
\t \t \t \t ON c.fruit=a.fruit AND c.factor = '56' 
 
       WHERE a.price=%d 
 
\t \t \t \t ",$pri)); 
 
print_r(sql);

ответ

0

Просто Удалить (,) после FROM (SELECT DISTINCT плоды FROM table_1 WHERE цена =% d) а,

/*table_1 
fruit price 
apple 4 
apple 5 
banana 4 
banana 5 
pear 4 

table_2 
fruit mark 
apple 5 
apple 6 
banana 4 
banana 7 
pear  6 

table_3 
fruit factor val 
apple 56  good 
apple 60  OK 
banana 89  good 
banana 90  good 
pear  56  bad 
*/ 
$pri=4; 
$sql = $wpdb->get_results($wpdb->prepare(" 
       SELECT 
       b.fruit,c.val 
       FROM (SELECT DISTINCT fruit FROM table_1 WHERE price=%d) a 
       LEFT JOIN table_2 b 
        ON b.fruit=a.fruit and b.mark != '4' 
       LEFT JOIN table_3 c 
        ON c.fruit=a.fruit AND c.factor = '56' 
       ",$pri)); 
print_r(sql); 

И выход:

fruit val  
apple good 
apple good 
pear bad 
banana NULL 
Смежные вопросы