तो मेरे पास मेरे डेटाबेस में "Clients" नामक एक टेबल है और दूसरा "Pets" कहलाता है। वे एक सहयोगी तालिका से जुड़े हुए हैं जिसका अर्थ है कि एक "Clients" में दो "Pets" हो सकते हैं।

मैं अपने क्लाइंट और पालतू जानवरों को प्रदर्शित करने के लिए FOREACH लूप का उपयोग कर रहा हूं, लेकिन जब एक क्लाइंट के पास कई पालतू जानवर होते हैं, तो मेरा फ़ोरैच लूप सब कुछ प्रिंट करता है, जितने क्लाइंट के पास पालतू जानवर होते हैं।

यहाँ देखें

यहाँ मेरा foreach लूप है

foreach ($files as $file) :
echo $file['address'];
endforeach

मेरी समस्या यह है कि मैं चाहता हूं कि "pets" (<?= $file['petName']; ?>) को छोड़कर सब कुछ सामान्य रूप से प्रदर्शित हो और देखें कि ग्राहक के पास 2 पालतू जानवर हैं।

इस तरह :

आपकी सहायताके लिए धन्यवाद !

मेरी एसक्यूएल क्वेरी

SELECT *
FROM clients
LEFT JOIN owners ON owners.idClients = clients.idClients
LEFT JOIN pets ON pets.idPets = owners.idPets
LEFT JOIN clientsdocs ON clientsdocs.idClients = clients.idClients
WHERE clients.idClients='$id'
php
0
pierre273 10 सितंबर 2020, 22:42

2 जवाब

सबसे बढ़िया उत्तर

आप क्वेरी बदल सकते हैं जैसे:

SELECT
    clients.*, 
    GROUP_CONCAT(petName) AS petsNames # implode pets names s into 1 string
FROM clients
LEFT JOIN owners ON owners.idClients = clients.idClients
LEFT JOIN pets ON pets.idPets = owners.idPets
LEFT JOIN clientsdocs ON clientsdocs.idClients = clients.idClients
GROUP BY clients.idClients # this is group all client's data in single row
WHERE clients.idClients='$id';

यह समाधान नहीं है, लेकिन आपको सर्वोत्तम समाधान के लिए एक विचार दे सकता है।

0
Slava Rozhnev 10 सितंबर 2020, 23:10

बिल्कुल सही, मैं यही चाहता था, बहुत बहुत धन्यवाद!

यहाँ संशोधित कोड:

SELECT *, 
GROUP_CONCAT(DISTINCT petName ORDER BY petName) AS petsNames
FROM clients
LEFT JOIN owners ON owners.idClients = clients.idClients
LEFT JOIN pets ON pets.idPets = owners.idPets
LEFT JOIN clientsdocs ON clientsdocs.idClients = clients.idClients
WHERE clients.idClients='$id'
1
pierre273 10 सितंबर 2020, 23:32