2016-05-05 1 views
1

私のSQL SELECTクエリにはかなりのものがあります。私は3つのテーブルを結合したときに答えを見ることができますが、最後の4番目のテーブルに参加しようとすると '0 Results'メッセージが表示されます。データidのすべてが期待するが、私は第四表を追加するとき、それはもう動作とelse echo; "0results"を得るdoes notの仕事とディスプレイをDOESJOINを使用して3つのテーブルを選択していますが、4を選択できませんか?

$sql = "SELECT paymentPersonal.custID as paymentPersonalCust, paymentPersonal.firstname as paymentPersonalFname, paymentPersonal.lastname as paymentPersonalLname, paymentPersonal.mobile as paymentPersonalMobile, paymentPersonal.homephone as paymentPersonalHphone, paymentPersonal.email as paymentPersonalEmail, paymentsPayment.custID as paymentsPaymentCust, paymentsPayment.nameoncard as paymentsPaymentname, paymentsPayment.ccnumber as paymentsPaymentNumber, paymentsPayment.year as paymentsPaymentYear, paymentsPayment.month as paymentsPaymentMonth, paymentsPayment.code as paymentsPaymentCode, paymentsProduct.custID as paymentsProductCust, paymentsProduct.product as paymentsProduct from paymentPersonal join paymentsPayment on paymentsPayment.custID = paymentPersonal.custID join paymentsProduct on paymentPersonal.custID = paymentsProduct.custID where paymentPersonal.custID='$custID'"; 

$result = $conn->query($sql); 

if ($result != null) 
{ 
    // output data of each row 
    while($row = $result->fetch_assoc()) 
    { 

     echo "<br> custID: ". $row["paymentPersonalCust"]. " - FirstName: ". $row["paymentPersonalFname"]. " - LastName: " . $row["paymentPersonalLname"] . " - Mobile: ". $row["paymentPersonalMobile"]. " - Homephone: ". $row["paymentPersonalHphone"]. " - Email: ". $row["paymentPersonalEmail"]."<br>"; 

     echo "<br> custID: ". $row["paymentsPaymentCust"]. " - CcName: ". $row["paymentsPaymentname"]. " - CcNumber: " . $row["paymentsPaymentNumber"] . " - ccYear: ". $row["paymentsPaymentYear"]. " - ccMonth: ". $row["paymentsPaymentMonth"]. " - ccCode: ". $row["paymentsPaymentCode"]."<br>"; 

     echo "<br> custID: ". $row["paymentsProductCust"]. " - Product: ". $row["paymentsProduct"]."<br>"; 

    } 
} 

else { 
    echo "0 results"; 
} 

:ここ3テーブルクエリです。これは私が追加した4テーブルの結果である:わからない

$sql = "SELECT paymentPersonal.custID as paymentPersonalCust, paymentPersonal.firstname as paymentPersonalFname, paymentPersonal.lastname as paymentPersonalLname, paymentPersonal.mobile as paymentPersonalMobile, paymentPersonal.homephone as paymentPersonalHphone, paymentPersonal.email as paymentPersonalEmail, paymentsPayment.custID as paymentsPaymentCust, paymentsPayment.nameoncard as paymentsPaymentname, paymentsPayment.ccnumber as paymentsPaymentNumber, paymentsPayment.year as paymentsPaymentYear, paymentsPayment.month as paymentsPaymentMonth, paymentsPayment.code as paymentsPaymentCode, paymentsProduct.custID as paymentsProductCust, paymentsProduct.product as paymentsProduct, paymentsShipping.custID as paymentsShippingCust, paymentsShipping.address as paymentsShippingAddress, paymentsShipping.region as paymentsShippingRegion, paymentsShipping.city as paymentsShippingCity, paymentsShipping.postcode as paymentsShippingPostcode from paymentPersonal join paymentsPayment on paymentsPayment.custID = paymentPersonal.custID join paymentsProduct on paymentPersonal.custID = paymentsProduct.custID join paymentsShipping on paymentsShipping.custID = paymentsPayment.custID where paymentPersonal.custID='$custID'"; 

$result = $conn->query($sql); 

if ($result != null) 
{ 
    // output data of each row 
    while($row = $result->fetch_assoc()) 
    { 

     echo "<br> custID: ". $row["paymentPersonalCust"]. " - FirstName: ". $row["paymentPersonalFname"]. " - LastName: " . $row["paymentPersonalLname"] . " - Mobile: ". $row["paymentPersonalMobile"]. " - Homephone: ". $row["paymentPersonalHphone"]. " - Email: ". $row["paymentPersonalEmail"]."<br>"; 

     echo "<br> custID: ". $row["paymentsPaymentCust"]. " - CcName: ". $row["paymentsPaymentname"]. " - CcNumber: " . $row["paymentsPaymentNumber"] . " - ccYear: ". $row["paymentsPaymentYear"]. " - ccMonth: ". $row["paymentsPaymentMonth"]. " - ccCode: ". $row["paymentsPaymentCode"]."<br>"; 

     echo "<br> custID: ". $row["paymentsProductCust"]. " - Product: ". $row["paymentsProduct"]."<br>"; 

     echo "<br> custID: ". $row["paymentPersonalCust"]. " - Address: ". $row["paymentsShippingAddress"]. " - Region: " . $row["paymentsShippingRegion"] . " - City: ". $row["paymentsShippingCity"]. " - postcode: ". $row["paymentsShippingPostcode"]."<br>"; 
    } 
} 

else { 
    echo "0 results"; 
} 

イムをその何か小さなイムが見つからないか、主要で天気を??アイデアがあれば教えてください..ありがとう!

+0

4番目のテーブルに有効なデータがありますか?おそらく、そこにデータがあると0の結果になるはずです。 – sagi

+0

PHPとはどのような関係がありますか?それはしません。スキーマとデータの見た目がわからないと、結果が得られない理由を知るにはどうすればよいでしょうか? –

+0

'SELECT * FROM paymentsShipping WHERE custID = '$ custID';' –

答えて

1

データのサンプルがなければ何が起こっているのか分かりにくいですが、最初に試してみるのは、通常のJOINではなくLEFT JOINを最終的に行うことです。通常のJOINデータを使用すると、結合の両側にデータが存在する必要があります。左結合データはソース表に存在する必要があります。

実際には、テーブルの一部にデータがない可能性が高いと思われる場合は、それらをすべて左結合にすることをお勧めします。たとえば、顧客がいることはわかっていますが、連絡先表に電話番号がない可能性があります。定期的に参加することで、電話番号が存在するまで顧客を見ることができなくなり、おそらく望ましくないことになります。

最後に、NULLになるように特定の列に対して左結合を作成する場合。

+0

は、エラーを検出しました。テーブルColumbusの間にコンマがありませんでした。 –

+1

素晴らしい、良い目!見つからないカンマは見えにくいかもしれません。通常、コードにSQLを入れなければならないと(私はこれを避けようとしますが)、私はそれを分解して、そうした種類のものを見つけやすくします。 –

関連する問題