tabellenname aus anderer tabelle und join

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

  • tabellenname aus anderer tabelle und join

    Hallo,

    ich versucher mich gerade daran aus einer tabelle einen tabellennamen auszulesen und in selben query in einem join zu verwenden, was leider nicht ganz klappt.

    So in etwa solls aussehen:

    select item.tablename,item.data from item as item left join i.tablename as additional on item.item_id=additional.itemId

    PHP-Code:
    select 
    item
    .tablename,item.data 
    from 
    item 
    as item left join i.tablename as additional 
    on item
    .item_id=additional.itemId 
    das ist kein orginalquery, er dient beispiel für mein anliegen

    hat jemand eine idee wie man das hinbekommen kann?
    ich hab es auch u.a. schon mit concat versucht, was auch nciht geklappt hat...:

    PHP-Code:
    select 
    item
    .tablename,item.data 
    from 
    item 
    as item left join concat('dyntable_',i.tablename) as additional 
    on item
    .item_id=additional.itemId 

    für rat, ansatzpunkte sowohl für komplettlösungen wäre ich euch sehr dankbar

    mfg klaus

  • #2
    PHP-Code:
    SELECT tablename 
    FROM item
    LEFT JOIN CONCAT
    ('dyntable_',tablename) AS additional 
    ON item
    .item_id=additional.itemId 
    Funktioniert das? Du beziehst dich auf den Alias "i", vergibst ihn aber nirgendwo. Ansonsten: mysql_error posten!
    ich glaube

    Kommentar


    • #3
      Original geschrieben von ministry
      PHP-Code:
      SELECT tablename 
      FROM item
      LEFT JOIN CONCAT
      ('dyntable_',tablename) AS additional 
      ON item
      .item_id=additional.itemId 
      Funktioniert das? Du beziehst dich auf den Alias "i", vergibst ihn aber nirgendwo. Ansonsten: mysql_error posten!
      naja, es geht hier nicht darum ob diese queries gehen, hab ich ja geschrieben, sondern um das konzept nach dem ich vorgehen muss ...
      die queries mit denen ich es versucht habe hab ich nicht mehr da, ...

      naja dieser sollter denn gehen, bis auf das rausbekommen des tabellennamens, bzw verknüpfen:

      PHP-Code:


      select 
      item
      .tablename,item.data 
      from 
      item 
      as item left join concat('bla_',item.tablename) as additional 
      on item
      .item_id=additional.itemId 
      es geht mir nur darum wie ich eben den tabellennamen rausbekomme, bzw in den left join
      mein eigentlicher query hätte insgesamt 8 joins, das wär hier nu wohl etwas viel

      Zuletzt geändert von croti; 22.11.2007, 17:50.

      Kommentar


      • #4
        Du möchtest mit der linken Seite eines JOINS ein Tupel selektieren und ein Attributwert soll als Name der Relation für die rechte Seite des JOINS dienen?

        Das geht nicht. Alle referenzierten Relationen müssen statisch in der Query stehen. Das kann man sich auch leicht vor Augen führen, wenn man sich überlegt, wie Queries geparst werden. Es heißt zwar SELECT ... FROM ..., aber um die Aliase in der SELECT-Klausel auflösen zu können, stellt jeder SQL-Parser den ich kenne erstmal die FROM-Klausel nach vorn. Dann heißt es FROM ... SELECT ...
        Noch anschaulicher wirds mit echten Referenzen:
        FROM table AS t SELECT t.column ...

        Wenn sich nun "table" erst aus dem SELECT ergeben soll, könnte der Parser die syntaktische Korrektheit nicht mehr prüfen. Er hätte keine Chance zu ermitteln, ob t wirklich eine Spalte namens "column" hat.

        Wenn du diese Dynamik brauchst, hast du mit hoher Wahrscheinlichkeit nicht richtig normalisiert.

        Kommentar


        • #5
          danke, gut zu wissen das es nicht geht, das dachte ich mir schon, na denn lass ich mir was anderes einfallen, wollt die daten aus nem cms aufteilen, wegen größe der contenttabelle, und gleich noch ein paar funktionen zufügen

          thx

          Kommentar

          Lädt...
          X