2016-05-08 6 views
1

enter image description here Bildbeschreibung hier eingebenIch habe diesen SQL-Code auf meinem PHP verwendet. Aber für jedes Produkt habe ich zweimal oder ein Duplikat von ihnen bekommen. Wie sollte ich schreiben, damit es das Produkt nicht dupliziere, das ich bekomme und nur einmal bekomme?Ich habe doppelten Wert von meiner inneren Verbindungstabelle erhalten

<?php 
include ('classes/functions.php'); 

if(isset($_POST['user_id'])){ 
$user_id = $_POST['user_id']; 
$check_receipt = "select si.shipping_name, 
    si.shipping_address, 
    si.shipping_contact, 
    si.shipping_email, 
    o.order_date, 
    o.trx_id, 
    o.tracking_num, 
    o.quantity, 
    o.store_id, 
    o.product_id, 
    p.product_title, 
    p.product_price, 
    p.product_img1, 
    p.product_weight 
from shipping_infos si 
inner join orders o 
on si.user_id = o.user_id 
inner join products p 
on p.product_id = o.product_id 
where si.user_id='".$user_id."' order by o.trx_id;" ; 

     $run_receipt_checking = mysqli_query($con, $check_receipt); 
     $result = array(); 
    while($row = mysqli_fetch_array($run_receipt_checking)){ 
    array_push($result, 
    array(
      'shipping_name'=>$row[0], 
      'shipping_address'=>$row[1], 
      'shipping_contact'=>$row[2], 
      'shipping_email'=>$row[3], 
      'order_date'=>$row[4], 
      'trx_id'=>$row[5], 
      'tracking_num'=>$row[6], 
      'quantity'=>$row[7], 
      'store_id'=>$row[8], 
      'product_id'=>$row[9], 
      'product_title'=>$row[10],    
      'product_price'=>$row[11], 
      'product_img1'=>$row[12],  
      'product_weight'=>$row[13]   

)); 
} 
echo json_encode(array("result"=>$result)); 
} 

?>

+0

Ich denke, es ist ein Problem mit der PHP nicht die SQL. Könnten Sie mehr Code schreiben, wie Sie die Abfrage in PHP ausführen? –

+0

"distinct" unmittelbar nach 'select' hinzufügen –

+0

Es wäre gut zu fragen, ob es doppelte Einträge in der Datenbank selbst gibt? –

Antwort

0

Ich vermute, Ihr p.product_id ein eindeutiges Feld in Ihrer DB ist.

Wenn ja, können Sie GROUP BY p.product_id am Ende Ihrer Aussage hinzufügen.

$check_receipt = "select si.shipping_name, 
    si.shipping_address, 
    si.shipping_contact, 
    si.shipping_email, 
    o.order_date, 
    o.trx_id, 
    o.tracking_num, 
    o.quantity, 
    o.store_id, 
    o.product_id, 
    p.product_title, 
    p.product_price, 
    p.product_img1, 
    p.product_weight 
    from shipping_infos si 
    inner join orders o 
on si.user_id = o.user_id 
inner join products p 
on p.product_id = o.product_id 
where si.user_id='".$user_id."' order by o.trx_id group by p.product_id;" ; 
2

Dies ist zu lang für einen Kommentar.

Duplikate in der Ergebnismenge implizieren mehrere Übereinstimmungen in den Joins. Ohne Beispieldaten ist es wirklich schwer zu sagen, wo es auftritt.

Wenn ich basierend auf der Abfrage raten müsste, dann würde raten, dass Benutzer mehrere Zeilen in shipping_infos haben könnten. Es gibt definitiv andere Möglichkeiten, aber ich würde mit einer einfachen Abfrage beginnen und bis zur letzten Abfrage aufbauen.

+0

zu Recht, Beispieldaten sind ein Muss! – Ayub

Verwandte Themen