2016-08-04 3 views
0

Was habe ich falsch gemacht. Es echo nichts. Die erwartete Ausgabe ist Apfel und Birne mit val gut und 0. Zuerst bekomme ich alle Früchte mit Preis 4 auf Tabelle_1, dann schließe ich mich table_2 an, schließe jede Fruchtmarkierung = 4 aus, schließe Banane aus, dann schließe ich table_3 an, bekomme das val if Faktor Match 56, so Apple-Match, und Birne Faktor nicht übereinstimmen, also zurückgeben 0. Aber mein Code echo nichts, didnot Fehler nicht sehen, aber nur Echo nichts. Beitritt drei Tabellen mysql PHP, aber Echo nichts

/* 
 
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);

Antwort

0

einfach entfernen (,) nach FROM (DISTINCT Obst aus table_1 SELECT WHERE preis =% d) a,

/*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); 

Und der Ausgang ist:

fruit val  
apple good 
apple good 
pear bad 
banana NULL