WebHU - Programozási kérdések és válaszok

Választás a megjegyzések és a képek táblázatából az egyes cikkekhez egy while ciklusban

Van egy cikktáblázatom, és egy while ciklusban megjelenítem a kezdőlapon. A while cikluson belül szeretném megjeleníteni az egyes cikkekhez tartozó megjegyzések és képek számát.

Nekem most működik, de összesen három lekérdezésről van szó, próbálom az első lekérdezésben kombinálni, majd csak egy while ciklusban megjeleníteni az összeset. A következőt próbálom elérni: Cikkek oldal

A jelenlegi formátum, amit követek:

//a represents articles table, c represents comments table, i represents image table

$query = mysqli_query($conn, "SELECT a.a_id, a.title, a.datetime, a.user_id FROM a ORDER BY a.datetime DESC");

while($fetch = mysqli_fetch_assoc($query){
   $imageQ = msqli_query($conn, "SELECT COUNT(image_path), image_path FROM i WHERE a_id = '$fetch['a_id']'");
$imageFetch = mysqli_fetch_assoc($imageQ);
$commentQ = mysqli_query($conn, "SELECT COUNT(comment_id) FROM c WHERE a_id = '$fetch['a_id']'");
$commentFetch = mysqli_fetch_assoc($commentQ);
}

Ezeket a lekérdezéseket egyetlen lekérdezésbe szeretném zsúfolni, amely lekéri a cikket, valamint az egyes cikkekhez és az első képhez tartozó megjegyzések és képek számát.

03.03.2017

Válaszok:


1

A képek és a megjegyzések az adatok külön dimenziói. Tehát óvatosnak kell lennie azzal kapcsolatban, hogyan hozza őket össze. Az Ön esetében az értékeket összesítheti az összekapcsolások elvégzése előtt:

SELECT a.a_id, a.title, a.datetime, a.user_id,
       i.num_images, c.num_comments
FROM a LEFT JOIN
     (SELECT a_id, COUNT(image_path) as num_images
      FROM i
      GROUP BY a_id
     ) i
     ON i.a_id = a.a_id LEFT JOIN
     (SELECT a_id, COUNT(comment_id) as num_comments
      FROM c
      GROUP BY a_id
     ) c
     ON c.a_id = a.a_id
ORDER BY a.datetime DESC;
03.03.2017
  • Köszönöm @GordonLinoff Most a te módszeredet használom! 10.04.2017

  • 2

    Használhat mysql beágyazott lekérdezéseket

    SELECT a.,tab1.,tab2.* FROM a INNER JOIN (SELECT * FROM b ) as tab1 INNER JOIN (SELECT * FROM c) as tab2

    Remélhetőleg ezzel elérheti a kívánt kimenetet.

    Kösz

    03.03.2017
    Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..