2016-05-26 4 views
0

Ich habe folgende Mysql Tabelle:Wie zeigen Sie alle Daten aus mehreren Tabellen mit SQL JOIN-Abfrage?

1) Produkte
2) product_images
3) product_date_time
4) product_menu
5) chef_profile

I alle Daten aus dieser 5 Tabelle zeigen, müssen eine Seite namens menu-details.php

Alle Tabelle haben foreign key als p_idproducts Tabelle ID und einige Tabelle haben mehrere dat a desselben p_id.

diese Abfrage mysql Werden Sie Fan ich bin mit zu erledigen:

$query = mysqli_query($conn, "SELECT p.p_id, p.p_title, p.p_description, 

p.p_price, p.p_availability, p.delivery_option, p.event_location, 

pimg.p_large_image, pimg.p_small_image, pdt.date, pm.p_menu_title, 

pm.p_menu_description, pm.p_menu_price, pm.p_menu_availability, chef.fname, 

chef.lname, chef.chef_details FROM products as p LEFT JOIN product_images as 

pimg ON p.p_id = pimg.p_id LEFT JOIN product_date_time as pdt ON pdt.p_id = 

p.p_id LEFT JOIN product_menu as pm ON pm.p_id = p.p_id LEFT JOIN 

chef_profile AS chef ON chef.u_id = p.u_id WHERE p.p_id = '$mid' ") or 

die('wrong query'); 

Daten zu zeigen, dass ich folgende PHP-Code verwende:

$result = mysqli_fetch_array($query);   
$menu_title = htmlspecialchars($result['p_title']); 

Meine Fragen

  1. Soll ich 5 eindeutige sql query verwenden, um Daten zu dieser menu_details.php Seite anzuzeigen?

  2. Jetzt zeigt diese Abfrage einen einzelnen Datensatz aus dieser Tabelle, die mehrere Daten desselben p_id haben. Ich muss alle Daten zeigen, die p_id mit mehreren Daten haben. Wie kann ich das machen ?

  3. Zum Beispiel: Ich habe folgende Daten in product_images Tabelle:

    pimg_id p_large_image p_id u_id 
    
    1   name   203 25 
    1   name   204 26 
    1   name   204 25 
    1   name   205 27 
    1   name   205 28 
    

Wenn ich also php while Schleife verwenden Sie es aus dieser Tabelle alle Daten ist zeigt, aber es ist sein sollten alle Daten auf p_id basierend zeigen für zB p_id = 204

while($result = mysqli_fetch_array($query)) { 
    echo $menu_l_image = htmlspecialchars($result['p_large_image']); 
    echo '<br/>'; 
} 
+0

verwenden Haben Sie ein Beispiel dafür, was man das Ergebnis erwarten aussehen? – shamsup

+0

Ja, ich habe. Lassen Sie mich Ihnen –

+0

zeigen Ich aktualisierte meine Frage –

Antwort

0

Wenn die p.id eine ganze Zahl ist, die einzelnen quot entfernen e bilden mid $

"SELECT 
    p.p_id, 
    p.p_title, 
    p.p_description, 
    p.p_price, 
    p.p_availability, 
    p.delivery_option, 
    p.event_location, 
    pimg.p_large_image, 
    pimg.p_small_image, 
    pdt.date, 
    pm.p_menu_title, 
    pm.p_menu_description, 
    pm.p_menu_price, 
    pm.p_menu_availability, 
    chef.fname, 
    chef.lname, 
    chef.chef_details 
    FROM products as p 
    LEFT JOIN product_images as pimg ON p.p_id = pimg.p_id 
    LEFT JOIN product_date_time as pdt ON pdt.p_id = p.p_id 
    LEFT JOIN product_menu as pm ON pm.p_id = p.p_id 
    LEFT JOIN chef_profile AS chef ON chef.u_id = p.u_id 
    WHERE p.p_id = $mid " 

von previus eine richtige sanitize der $ Mitte vars können Sie

"SELECT 
    p.p_id, 
    p.p_title, 
    p.p_description, 
    p.p_price, 
    p.p_availability, 
    p.delivery_option, 
    p.event_location, 
    pimg.p_large_image, 
    pimg.p_small_image, 
    pdt.date, 
    pm.p_menu_title, 
    pm.p_menu_description, 
    pm.p_menu_price, 
    pm.p_menu_availability, 
    chef.fname, 
    chef.lname, 
    chef.chef_details 
    FROM products as p 
    LEFT JOIN product_images as pimg ON p.p_id = pimg.p_id 
    LEFT JOIN product_date_time as pdt ON pdt.p_id = p.p_id 
    LEFT JOIN product_menu as pm ON pm.p_id = p.p_id 
    LEFT JOIN chef_profile AS chef ON chef.u_id = p.u_id 
    WHERE p.p_id = ". $mid . ";" 
+0

Lassen Sie mich Ihre Abfrage verwenden –

+0

Gleiches Ergebnis mit dieser Abfrage! –

+0

Dann müssen Sie Ihre Daten und Ihre Beziehung besser überprüfen .. – scaisEdge

Verwandte Themen