2016-09-10 2 views
1

Ich habe 3 Tabellen cam_details, cam_category und upload_data folgend ..Join drei Tabellen ohne eine gemeinsame ID #mysql

cam_details:

+---------+-----------+----------- 
| cam_id | category_id| cam_name | 
+========+============+=========== 
| 1  | 1   | CCTV  | 
+--------+------------+----------- 
| 2  | 1   | CCtv2 | 
+--------+------------+=========== 
| 3  | 2   | cctv3 | 
+--------+------------+=========== 
| 4  | 4   | cctv4 | 
+--------+------------+=========== 

cam_category:

+-------------+---------------+ 
| category_id | category_name | 
+=============+===============+ 
| 1   | Analog  | 
+-------------+---------------+ 
| 2   | Digital  | 
+-------------+---------------+ 
| 3   | Network  | 
+-------------+---------------+ 
| 4   | Simple  | 
+-------------+---------------+ 

upload_data:

+---------+-----------+ 
| cam_id | FILE_NAME | 
+========+============+ 
| 1  | abc.jpg | 
+--------+------------+ 
| 1  | abc2.jpg | 
+--------+------------+ 
| 1  | abc3.jpg | 
+--------+------------+ 
| 2  | xyz.jpg | 
+--------+------------+ 

Jetzt möchte ich die Details der Kamera in einem Array abrufen und die Ergebnisse anzeigen. Ich kann Cam pic und cam_details abrufen, aber nicht den cam_category Namen. Code unten ...

<?php 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$result = mysqli_query($conn,"SELECT cam_details.*, upload_data.FILE_NAME FROM `cam_details` 
JOIN upload_data on cam_details.cam_id = upload_data.cam_id LEFT JOIN cam_category c 
    on cam_details.category_id = c.category_id 
    GROUP BY upload_data.cam_id ORDER BY cam_id DESC"); 
while($row = mysqli_fetch_array($result)) 
{?> 
+2

verwenden, das ist, weil Sie es gar nicht wählen. Sie wählen alles von 'cam_details' und' 'FILE_NAME von' upload_data' - das ist es. Es gibt keine Auswahl von irgendetwas aus der 'cam_category' Tabelle. Sie wollen etwas wie 'SELECT cam_details. *, Upload_data.FILE_NAME, cam_category.category_name FROM ....' statt. – Qirel

+0

funktionierte nicht @Qirel –

+1

sollten Sie nicht verwenden cam_details.categoryID statt cam_details.category_id? – Benjamin

Antwort

0

statt links schließen sich nur anschließen und selec Befehl zunächst für die cateroy Tisch ...

<?php 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$result = mysqli_query($conn,"SELECT cam_details.*, upload_data.FILE_NAME, cam_category.* FROM `cam_details` 
JOIN upload_data on cam_details.cam_id = upload_data.cam_id JOIN cam_category 
    on cam_details.category_id = cam_category.category_id 
    GROUP BY upload_data.cam_id ORDER BY cam_id DESC"); 
while($row = mysqli_fetch_array($result)) 
{?> 
+0

dank viel, funktioniert gut. –

+0

Sie haben eine GROUP BY-Klausel, aber keine Aggregatfunktionen. Die Alarmglocken sollten läuten verwenden. und das tut sie ganz sicher nicht ‚funktionieren‘ – Strawberry

+0

Entschuldigung für die verspätete Antwort, was aggerate Funktion? i Gruppe verwendet bcoz ein cam_id mehrere Bilder haben @Strawberry –