Announcement

Collapse
No announcement yet.

Abfragen über mehrere Tabellen

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

  • Abfragen über mehrere Tabellen

    Hallo zusammen

    Irgendwie komme ich nicht ans Ziel.
    Evtl. hat ja jemand einen Tipp für mich, wie ich mein Problem am Besten lösen kann.

    In einer Datenbank, welche ich nicht verändern kann, sind 4 benötigte Tabellen.

    [TERMS]
    term_id
    name
    slug

    [TERM_RELATIONSHIP]
    object_id
    term_taxonomy_id

    [POSTS]
    ID
    post_title
    post_status
    post_name

    [POSTMETA]
    meta_id
    post_id
    meta_key
    meta_value

    Die Tabellen sind folgendermassen verknüpft:
    TERMS.post_id - TERM_RELATIONSHIP.term_taxonomy_id
    TERM_RELATIONSHIP.object_id - POSTS.ID
    POSTS.ID - POSTMETA.post_id

    In den Tabellen sind Einsatzdaten, welche ich auslesen will. Grundsätzlich will ich alle Einsätze auslesen und die nach dem Einsatzdatum sortieren. Soweit ist dies auch kein Problem. Aber....

    In der Tabelle POSTMETA und TERMS sind mehrere Werte, welche zu einem einzigen Einsatz gehören.

    Das ganze sieht dann etwa so aus:

    [POSTS]
    ID - 65
    post_title - Einsatz 1
    post_status - aktiv
    post_name - einsatz-1

    [POSTMETA]
    meta_id - 1
    post_id - 65
    meta_key - Adresse
    meta_value - Musterstrasse

    meta_id - 2
    post_id - 65
    meta_key - DatumZeit
    meta_value - 2012-10-26 15:30

    meta_id - 3
    post_id - 65
    meta_key - Ort
    meta_value - Musterstadt

    [TERMS]
    term_id - 1
    name - Kategorie 1
    slug - kategorie-1

    term_id - 2
    name - Kategorie 2
    slug - kategorie-2

    [TERM_RELATIONSHIP]
    object_id - 65
    term_taxonomy_id - 1

    object_id - 65
    term_taxonomy_id - 2


    Wie kann ich jetzt die Einsatzdaten so auslesen, dass nur aktive Einsätze angezeigt werden und sie nach dem Einsatzdatum sortiert sind? Also in etwa so:
    65 | Einsatz 1 | 2012-10-26 15:30 | Kategorie 1 |Bedingung aktiv = ja
    66 | Einsatz 2 | 2012-11-15 15:30 | Kategorie 1 |Bedingung aktiv = ja
    67 | Einsatz 3 | 2012-11-15 15:35 | Kategorie 2 |Bedingung aktiv = ja

    Die restlichen Werte benötige ich erst in der Detailansicht, welche wiederum kein Problem darstellen dürfte. Das kann ich mit mehreren Abfragen lösen und die Einsatzdaten in einer Schleife ausgeben.
    Die Anzahl der Datensätze in der Tabelle [POSTMETA] ist für jeden Einsatz identisch.

    Grundsätzlich muss ich 3 Abfragemöglichkeiten haben.
    Alle Einsätze (jeweils beschränkt auf die letzten 20 Einsätze)
    Alle Einsätze aus dem Jahr X
    Alle Einsätze aus der Kategorie X

    Hat jemand eine Idee, wie ich das umsetzen kann?

  • #2
    Hallo,

    zum Verknüpfen mehrerer Tabellen: siehe JOIN
    zum Einschräncken der Ergebnismenge: siehe WHERE

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hi Falk

      Besten Dank für Deine superschnelle Antwort.

      Dein Link auf JOIN hat mir die Lösung gebracht. Herzlichen Dank. Dass man Bedingungen nach ON mit AND verknüpfen kann, wusste ich nicht.
      JOIN <zusatztabelle1> ON <bedingung1> AND <bedingung2>

      Genau danach habe ich gesucht.

      Comment

      Working...
      X