Oldal: 1 / 3 123 UtolsóUtolsó
Eredmény: 1 - 10 (21) összesen

Téma: group by

  1. #1
    Tag anatre logója
    Csatlakozott
    07-10-14
    Hely
    Budapest
    Hozzászólás
    72
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás group by

    Üdv!

    Akarok csinálni egy olyan lekérdezést, hogy az utolsó 6 hozzászólást kiírja.

    Van egy garazs_hozzaszolas táblám, ahol a hozzászólásokat tárolom.
    Abban van egy id_tuning mező, amivel azonosítom hogy melyik autóhoz tartozik.
    Van egy garazs_vt táblám, ahol pedig a tuningok vannak.
    a garazs_hozzaszolas.id_tuning megegyezik a garazs_vt.id jével.

    Na most a lényeg, hogy ha csak simán akarom lekérdezni, akkor egy autót többször is kiír. Próbálkoztam egy GROUP BY id_tuning -al, de akkor meg a legelső hozzászólás dátumát kérdezi le mindhez.

    Valami ötlet?

    Kód:
    $lekeres = mysql_query("SELECT * FROM `garazs_hozzaszolas` GROUP BY id_tuning ORDER BY `datum` DESC LIMIT 6");
                   ?><table border="0" width="215px"><?php
                   while($l = mysql_fetch_array($lekeres)) {
                        $kocsi = mysql_fetch_array(mysql_query("SELECT * FROM `garazs_vt` WHERE `id` = '".$l['id_tuning']."'"));
                        $nev = marka($kocsi['marka'])." ".$kocsi['tipus'];
                        $nev = substr($nev, 0, 16);
                        ?>
                        <tr valign="top" align="left">
                            <td width="110px" align="left">
                                <a href="/garazs/tuning/<?php echo $kocsi['id']; ?>/"><?php echo $nev." ..."; ?></a>
                            </td>
                            <td width="105px" align="right">- <span style="font-size:11px;"><?php echo timestamp($l['datum'])?></span></td>
                        </tr><?php
                   }




  2. #2
    Rubyist Geri logója
    Csatlakozott
    07-12-15
    Hely
    \x90
    Hozzászólás
    5.744
    Begyűjtött 1.428 köszönetet
    892 hozzászólásával

    Alapbeállítás re: group by

    Idézet TreamX eredeti hozzászólása Hozzászólás megtekintése

    Valami ötlet?
    ha jól értem amit akarsz akkor elég egy sql lekérdezés:

    Kód:
    SELECT * FROM garazs_hozzaszolas gh,garazs_vt vt where  gh.id_tuning = vt.id ORDER BY `datum` DESC LIMIT 6
    az eredményen pedig végigmész a ciklussal. ami ha vannak ugyanolyan nevű mezők, akkor alias-okkal kérdezd le ami kell:
    Kód:
    SELECT gh.mezo1 as ghmezo1,vt.mezo1 as vtmezo1 FROM garazs_hozzaszolas gh,garazs_vt vt where  gh.id_tuning = vt.id ORDER BY `datum` DESC LIMIT 6



    If debugging is the process of removing software bugs, then programming must be the process of putting them in.
    Ruby blog
    Give a man a fish and you feed him for a day. Teach a man to fish and you feed him for a lifetime.
    Respect all, fear none

  3. #3
    Tag anatre logója
    Csatlakozott
    07-10-14
    Hely
    Budapest
    Hozzászólás
    72
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: group by

    Hű, hát ez így kicsit fura, bonyi első ránézésre. Kicsit bővebben esetleg? :$



  4. #4
    MinderBinder edem logója
    Csatlakozott
    09-09-02
    Hely
    Budapest
    Hozzászólás
    1.093
    Thanked 1 Time in 1 Post

    Alapbeállítás re: group by

    Idézet TreamX eredeti hozzászólása Hozzászólás megtekintése
    Üdv!
    Akarok csinálni egy olyan lekérdezést, hogy az utolsó 6 hozzászólást kiírja.
    Van egy garazs_hozzaszolas táblám, ahol a hozzászólásokat tárolom.
    Abban van egy id_tuning mező, amivel azonosítom hogy melyik autóhoz tartozik.
    Van egy garazs_vt táblám, ahol pedig a tuningok vannak.
    a garazs_hozzaszolas.id_tuning megegyezik a garazs_vt.id jével.
    Na most a lényeg, hogy ha csak simán akarom lekérdezni, akkor egy autót többször is kiír. Próbálkoztam egy GROUP BY id_tuning -al, de akkor meg a legelső hozzászólás dátumát kérdezi le mindhez.
    Valami ötlet?
    Ez nem teljesen világos. Ha jól értettem, akkor van egy táblád, amiben a hozzászólásokat tárolod és van egy táblád, amiben az autókat. Minden autóhoz hozzá lehet szólni (ha jól sejtem) és úgy azonosítod be a hozzászólásokat, hogy minden hozzászólásnak van egy garazs id-je, amivel beazonosítod, hogy melyik autóhoz tartozik, de mivel ide is kell elsődleges kulcs ezért van egy sima hozzászólás id is?

    Ebben az esetben, ha csak azért akarod össze joinolni a táblákat, hogy a hozzászólásodhoz legyen egy garázs id (autó neve), akkor azt kell csinálnod, hogy SELECT * FROM hozzászólások RIGHT JOIN garazs on garazs id = komment id. LIMIT 6. ILyenkor persze lehet, hogy több ismétlődés lesz, ha 1-hez többsfzör hozászoltak


    // Only illogics can find
    // hidden flaws in a straight logic line

  5. #5
    Tag anatre logója
    Csatlakozott
    07-10-14
    Hely
    Budapest
    Hozzászólás
    72
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: group by

    Idézet edem eredeti hozzászólása Hozzászólás megtekintése
    Ez nem teljesen világos. Ha jól értettem, akkor van egy táblád, amiben a hozzászólásokat tárolod és van egy táblád, amiben az autókat. Minden autóhoz hozzá lehet szólni (ha jól sejtem) és úgy azonosítod be a hozzászólásokat, hogy minden hozzászólásnak van egy garazs id-je, amivel beazonosítod, hogy melyik autóhoz tartozik, de mivel ide is kell elsődleges kulcs ezért van egy sima hozzászólás id is?

    Ebben az esetben, ha csak azért akarod össze joinolni a táblákat, hogy a hozzászólásodhoz legyen egy garázs id (autó neve), akkor azt kell csinálnod, hogy SELECT * FROM hozzászólások RIGHT JOIN garazs on garazs id = komment id. LIMIT 6. ILyenkor persze lehet, hogy több ismétlődés lesz, ha 1-hez többsfzör hozászoltak
    Igen, valami ilyesmi. Épp ezért gondoltam én a group by-ra, hogy ne ismétlődjön, mivel jelenleg anélkül azt teszi, de azzal meg nem működik.

    Az összekapcsolás pedig azért lenne szükséges, mert a garazs_vt ből kérem le az autó nevét, a hozzászólásból pedig a hozzászólás dátumát.


    Utoljára módosítva: anatre által : 2010-02-25 16:22 Oka: kiegészítés

  6. #6
    TZ.
    TZ. nem elérhető
    Mentor TZ. logója
    Csatlakozott
    09-11-06
    Hely
    Budapest
    Hozzászólás
    454
    Begyűjtött 11 köszönetet
    6 hozzászólásával

    Alapbeállítás re: group by

    Javaslom, hogy ha nehezedre megy a táblák összekapcsolása, akkor egyszer izadj ki egy view készítését és utána azt használd.

    Valami ilyesmi-t kellene csinálnod:
    Kód:
    CREATE OR REPLACE VIEW garazs_hozzaszolas_v as
    SELECT h.*, g.marka, g.tipus
      FROM garazs_hozzaszolas h 
      LEFT JOIN garazs_vt g ON h.id_tuning = g.id
    Ezek után, könnyen használhatod bárhol a hozzászólásokat a másik tábla mezőível:
    Kód:
    Select * from garazs_hozzaszolas_v  order ... limit ...
    ----------
    "group by" nem kell!


    Utoljára módosítva: TZ. által : 2010-02-25 16:53

  7. #7
    kow
    kow nem elérhető
    KowDerMei$ter kow logója
    Csatlakozott
    07-05-09
    Hely
    Budapest
    Hozzászólás
    1.447
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: group by

    Ezt úgy próbáld megcsinálni, hogy készítesz egy subselectet:
    SELECT garazs_vt.*, ( SELECT count(id) FROM garazs_hozzaszolas WHERE garazs_hozzaszolas.id_tuning = garazs_vt.id ) AS hozzaszolasok FROM garazs_vt
    Ugyanezt megteheted join-al is, nem tudni hogy lesz a gyorsabb.



  8. #8
    TZ.
    TZ. nem elérhető
    Mentor TZ. logója
    Csatlakozott
    09-11-06
    Hely
    Budapest
    Hozzászólás
    454
    Begyűjtött 11 köszönetet
    6 hozzászólásával

    Alapbeállítás re: group by

    kow: nem erre van szüksége. Vagy nagyon benézek valamit.



  9. #9
    kow
    kow nem elérhető
    KowDerMei$ter kow logója
    Csatlakozott
    07-05-09
    Hely
    Budapest
    Hozzászólás
    1.447
    Begyűjtött 0 köszönetet
    0 hozzászólásával

    Alapbeállítás re: group by

    Idézet TZ. eredeti hozzászólása Hozzászólás megtekintése
    kow: nem erre van szüksége. Vagy nagyon benézek valamit.
    nekem az jött le, hogy kell egy lista egy táblából, amihez tartoznak kommentek. A kommentek számát ha ki akarja íratni, akkor gondba kerül, mert a group by nem tiszteli a sorbarendezést. Ebbe én is belefutottam már és a megoldás az előző lett.



  10. #10
    MinderBinder edem logója
    Csatlakozott
    09-09-02
    Hely
    Budapest
    Hozzászólás
    1.093
    Thanked 1 Time in 1 Post

    Alapbeállítás re: group by

    Én úgy értettem, hogy a kommenteket szeretné kiiratni. Tegyük fel, hogy A autóhoz írtak eddig 4 kommentet. B autóhoz kettőt. Ha leválogatjuk a kommenteket, akkor A autó 4x, B autó 2x fog szerepelni. Ez nem azért van, mert valahol duplikáció van, hanem pusztán azért, mert a legutóbbi 4 komment A autóhoz érkezett. Nem erre gondoltál duplikáció alatt? Jó lenne tisztázni, hogy pontosan milyen az adatbázis struktúrád és mit szeretnél elérni. Egy kép sokat segítene



Oldal: 1 / 3 123 UtolsóUtolsó

A téma címkéi:

Könyvjelzők

Hozzászólás szabályai

  • Új témákat nem hozhatsz létre
  • Válaszokat nem küldhetsz
  • Fájlokat nem csatolhatsz
  • A hozzászólásaidat nem módosíthatod
  •