Hirdetés

Keresés

Új hozzászólás Aktív témák

  • martonx

    veterán

    válasz Taci #5091 üzenetére

    Észrevételeim:
    1. Select *-ot el kellene felejteni, és ki kellene írni azokat mezőket amiket ki szeretnél listázni.
    2. Group By-nál szépen leírja, hogy mi a baja: bele kell venni a többi listázandó mezőt is (érdemes utána járnod, hogy mi is az a group by, mysql, mariadb specialitás, hogy a példádban szereplő szintaktikailag helytelen group by egyáltalán futni tud bizonyos helyezetekben).
    3. Önszopatás a táblák mezőit a táblanévvel kezdődően elnevezni. Ha van egy táblád, aminek categories a neve, akkor annak id, és name mezői legyenek, ne pedig category_id, category_name.
    4. Nekem ez 4 ms alatt lefut, bár nyilván több szemszögből sem lehet összehasonlítani a te adataiddal (eltérő adat mennyiség, és MySql vs MariaDB, localhostos erős géped, vs. valami ingyenes osztott hosting a dbfiddle alatt).
    SELECT DISTINCT *
    FROM items AS i
    JOIN items_categories AS ic
    ON i.item_id = ic.item_id
    JOIN categories AS c
    ON c.category_id = ic.category_id
    AND c.category_id NOT IN (1,3,13,7,20)
    WHERE i.item_id NOT IN (117,132,145,209,211)
    ORDER BY i.item_date DESC

    5. Az Item nevű tábláktól idegrángást kapok. Légyszi nevezzük már el normálisan a táblákat. Jó, hogy nem fiszfasz, meg izé nevű tábláid vannak fiszfasz_izé nevű kapcsolótáblákkal. Aztán amikor 2 év múlva ránézel, te se fogod érteni, hogy mit is akartál az egyes táblákkal leképezni.

Új hozzászólás Aktív témák