[MySQL] Join auf Tabelle dessen Name in einem Feld steht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL] Join auf Tabelle dessen Name in einem Feld steht

    Hi zusammen,

    ich habe ein recht schwieriges Problem mit einer Verkaufsplattform (~ebay). Es geht darum ohne gravierende Änderungen eine performante Abfrage auf z.B. alle Artikel eines Users zu machen. (Also keine Schleife in PHP mit 20 Querys oder so )

    Das große Problem dabei ist das sich die Artikel je nach Kategorie in mehreren Tabellen befinden können.

    Die einfachste Lösung wäre ein Join auf die Tabelle die als String (varchar) in einem der selektierten Felder aus der Such-Tabelle steht. Soweit ich das beurteilen kann ist das allerdings in der Form nicht möglich.

    Hat irgendjemand eine Idee wie man dieses Problem ohne eine grundliegende Umstrukturierung hinbekommen könnte?

    Sinngemäß würde folgende Query die Aufgabenstellung lösen (was natülich seitens MySQL so nicht unterstütz wird):

    Code:
    SELECT a.*, DATEDIFF(NOW(), a.STAMP_START) as RUNTIME
          FROM `ad_search` s
            LEFT JOIN (s.AD_TABLE) a ON a.ID_AD=s.FK_AD
        WHERE s.FK_USER=52
    Hier noch Info's über den Tabellenaufbau und vorhandene Beziehungen:

    Kategorie-Tabelle
    Hier finden sich alle vorhandenen Kategorien in die Artikel eingetragen werden können. Für jede Kategorie ist eine Tabelle definiert in der die Artikel dann abgelegt werden. (Mehrere Kategorien können sich auch eine Tabelle teilen)

    Verknüpft sind die Kategorien dann einmal mit einer String-Tabelle in der die Multilingualen Namen und Beschreibungen liegen.
    Ausserdem wie gesagt über den Tabellen-Namen mit der dazugehörigen Tabelle in der dann die Artikel landen.

    Artikel-Tabellen
    In diesen Tabellen, die mit den Kategorien verknüft sind, finden sich die Datensätze der Artikel wieder. Diese Methode wird benutzt um abhängig von den Kategorien andere Felder definieren zu können.

    Verknüft sind die Artikel dann wiederum mit der Kategorie, mit einem Benutzer-Datensatz desjenigen der den Artikel eingestellt hat sowie mit ein paar unrelevanten Lookups.

    Such-Tabelle
    Hier finden sich alle vorhandenen Artikel aufbereitet für eine schnelle Suche wieder.

    Verknüpft sind die Datensätze mit der dazugehörigen Artikel-Tabelle (per Name) und der ID des Artikels und dem dazugehörigen User.

    (Alle Verknüpfungen ausser dem Namen der Artikel-Tabelle sind FK's die auf den Primary Index der entsprechenden Tabelle verweisen.)
    MfG Jens
    Zuletzt geändert von Forsaken; 05.08.2009, 15:56.
    IM: Pidgin | Browser: Chromium Firefox | HTML: SelfHTML | PHP: PHP.net SelfPHP | Linux: GnomeDo



    And remember, respect is everything!

  • #2
    Vieleicht kann man das mit einem UNION SELECT hinbekommen ?

    Kommentar


    • #3
      Jep, danke damit geht es. Wie schnell das ganze ist wird sich noch zeigen aber besser lässt sich das wohl nicht lösen.
      IM: Pidgin | Browser: Chromium Firefox | HTML: SelfHTML | PHP: PHP.net SelfPHP | Linux: GnomeDo



      And remember, respect is everything!

      Kommentar


      • #4
        Ich habe da auch schon einges mit realisiert - zur Performance - da wirst du überrascht sein.

        Kommentar

        Lädt...
        X