Verständnisfrage: wbdb, Sortieren nach Custom Fields

  • Hallo,

    ich versuche gerade, mehrere Posts nach Custom-Field(s) zu sortieren.

    SQL
    SELECT * FROM $wpdb->posts
        LEFT JOIN $wpdb->postmeta ON($wpdb->posts.ID = $wpdb->postmeta.post_id)    
        WHERE $wpdb->posts.post_status = 'publish'
        AND $wpdb->postmeta.meta_key = 'Hersteller'
        AND $wpdb->postmeta.meta_value = 'Sony'
        ORDER BY $wpdb->postmeta.meta_value ASC

    Das funktioniert wunderbar.

    Was ist, wenn ich nun meinen Query einschränken will ? Zum Beispiel ein 2. Custom-Field ins Spiel bringen will ?

    SQL
    SELECT * FROM $wpdb->posts
        LEFT JOIN $wpdb->postmeta ON($wpdb->posts.ID = $wpdb->postmeta.post_id)    
        WHERE $wpdb->posts.post_status = 'publish'
        AND $wpdb->postmeta.meta_key = 'Hersteller'
        AND $wpdb->postmeta.meta_value = 'Sony'
       [COLOR=Red] AND $wpdb->postmeta.meta_key = 'Format'
         AND $wpdb->postmeta.meta_value = 'Digital Betacam'[/COLOR]
        ORDER BY $wpdb->postmeta.meta_value ASC

    Hier wird nichts ausgegeben...

    Was ich erreichen möchte, ist: Alle Artikel mit "Hersteller: SONY" und "Format: Digital Betacam" ausgeben.

    vielen Dank für eure Hilfe.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • hallo,

    du kannst ein subquery machen.

    in etwa so (ungetestet):

    SELECT post_status, post_id, post_title, meta_key, meta_value, pm1.* FROM $wpdb->posts
    LEFT JOIN $wpdb->postmeta AS pm1 ON $wpdb->posts.ID = pm1.post_id
    WHERE $wpdb->posts.post_status = 'publish'
    AND meta_key = 'Hersteller'
    AND meta_value = 'Sony'
    AND pm1.post_id
    IN
    (select post_id FROM $wpdb->postmeta where
    meta_key = 'Format'
    AND meta_value = 'Digital Betacam')
    ORDER BY meta_value ASC

    gruß,
    joe

    Einmal editiert, zuletzt von joe le taxi (14. Februar 2010 um 06:52)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!