Announcement

Collapse
No announcement yet.

limitierte Ausgabe von Produkten mit ihren Tags

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • limitierte Ausgabe von Produkten mit ihren Tags

    Hallo zusammen,
    ich möchte auf meiner Startseite 20 Produkte ausgeben (Tabelle "products") und darunter die Tags (Tabelle "tags"), die zu dem jeweiligen Produkt gehören. Über eine dritte Tabelle (products_tags) sind diese beiden Tabellen miteinander verbunden.

    Derzeit gehe ich das folgendermaßen an:
    Code:
    SELECT products.titel, products.permalink, products.id, tags.tag, tags.permalink 
    FROM products, tags, products_tags 
    WHERE products.id = products_tags.product_id AND products_tags.tag_id = tags.id 
    ORDER BY products.id DESC LIMIT 20
    Allerdings besteht dabei das Problem, dass ein Produkt mehrfach aufgelistet wird (so häufig, wie es Tags besitzt), dadurch bekomme ich z.b. nur 5 unterschiedliche Produkte ausgegeben (wenn jedes Produkt 4 Tags besitzt), da das Limit ja auf 20 gesetzt ist.

    Eigentlich möchte ich aber einen Query, der erstmal die neuesten 20 Produkte selektiert und dann noch ihre dazugehörigen Tags, doch dazu fehlt mir leider das KnowHow, weiß jemand Rat?

  • #2
    SELECT products.titel, products.permalink, products.id, tags.tag, tags.permalink
    FROM products, tags, products_tags
    WHERE products.id = products_tags.product_id AND products_tags.tag_id = tags.id
    and product.id
    in (select p.pid from products p group by p.id order by p.id desc limit 20)
    ORDER BY products.id DESC

    Gruß
    docendo discimus

    Comment


    • #3
      Hallo und vielen dank
      Leider bekomme ich folgende Meldung:
      "#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'"

      Gibt es einen alternativen Query der gleiches erreicht ohne das ich meine MySQL Version upgraden muss?

      Comment


      • #4
        Ah, ich bin auf ein wichtiges Element gestoßen, was ich bislang nicht kannte "GROUP_CONCAT". Damit konnte ich es, für meinen Fall absolut ausreichend, lösen:

        Code:
        SELECT products.titel, products.permalink, products.id, GROUP_CONCAT(tags.tag) AS tags, GROUP_CONCAT(tags.permalink) AS tagpermalink
        FROM products
        LEFT JOIN products_tags on products_tags.product_id = products.id
        LEFT JOIN tags on tags.id = products_tags.tag_id
        GROUP BY products.id ORDER BY products.id DESC LIMIT 20

        Comment

        Working...
        X