2017-01-27 1 views
0

enter image description hereimmer doppelte Datensatz zur Auswahl

Ich habe 4 Tabellen:

clients, pricelist, result and result_details 

Ich mag ein Formular erzeugen, wo die transaction_id, name, test_name and result darauf erscheinen. Ich habe eine Auswahl für die name gemacht, aber ich kann nicht eine Auswahl für die test_name und result herausfinden.

Ich möchte so etwas wie dieses [pdf] [5]

$result=mysqli_query($con,"SELECT r.transaction_Id,r.client_id,r.result_id,r.test_id,t.test_id,t.result,p.test_id,p.Name,c.Id,c.surName,c.firstName,c.dob,c.Gender FROM result r 
           JOIN result_details t 
           on r.test_id = t.test_id 
           left JOIN pricelist p ON r.test_id = p.test_id 
           left JOIN clients c ON r.client_id = c.Id")or die(mysqli_error()); 


$r=mysqli_query($con,"SELECT DISTINCT id,firstName,surName,Gender,dob FROM clients join result WHERE result.client_id=clients.Id")or die(mysqli_error()); 

while ($row = mysqli_fetch_array ($r)) { 

    $id=$row['id']; 
    $clientfirstname=$row['firstName']; 
    $surname=$row['surName']; 
    $gender=$row['Gender']; 
    $dob=$row['dob']; 
    $t=mysqli_query($con,"SELECT transaction_Id FROM transaction WHERE clientId=$id") or die(mysqli_error()); 

    while ($test = mysqli_fetch_array ($t)) { 
     $transaction=$test['transaction_Id']; 
     $m=mysqli_query($con,"SELECT test_id,result_id from result where client_id=$id")or die(mysqli_error()); 
     while ($q = mysqli_fetch_array ($m)) {  
      $test_id=$q['test_id']; 
      $result_id=$q['result_id']; 
      $z=mysqli_query($con,"SELECT Name from pricelist where test_id=$test_id")or die(mysqli_error()); 
      while ($x = mysqli_fetch_array ($z)) {  
       $name=$x['Name']; 
       $query=mysqli_query($con,"SELECT result from result_details where result_id=$result_id")or die(mysqli_error()); 
       while ($query1 = mysqli_fetch_array ($query)) {  
        $result=$query1['result']; 
       } 
      } 
     } 
    } 
}      
+0

können Sie Ihre Ausgabe zeigen? –

+0

Verwenden Sie DISTINCT, um doppelte Datensätze zu entfernen ... SELECT DISTINCT r.transaction_Id .... und so weiter –

+0

Ich habe ein Bild von der Tabelle.Ich habe es mit anderen Auswahl versucht, aber ich nehme an, es ist kein guter Weg mysql commands zu sehen, sehe ich meinen Beitrag, den ich mit meiner anderen Auswahl bearbeitet habe – bouba

Antwort

0

Fügen Sie einfach:

GROUP BY AcctNo, OrderDate, Charge 
HAVING COUNT(1) = 1 

Die GROUP BY-Gruppen alle Zeilen mit dem gleichen field1, field2, ... und Lade zusammen, dann zeigt der HAVING COUNT (1) = 1 nur die Zeilen, in denen nur 1 Progenitor vorhanden war. Ich hoffe, es wird funktionieren

+0

Bei der Suche nach Duplikaten ist HAVING count (1)> 1, nicht wahr? –

Verwandte Themen