Peter: Tabellen mit identischen Feld-Namen eindeutig abfragen

Hallo liebes Forum,

folgende Frage:

wenn ich zwei mySql Tabellen mit einigen identischen Field-Namen aufbaue, z.B.

Table_A

id || pid || date_creation || foo || bar

und Table_B:

id || pid || date_creation || foreign_id || foobidoo || shalala

ist es dann möglich, in einem Query über beide Tabellen z.B. beide "date_creation" Werte auszulesen ?

Wenn ich versuche, ein select Statement folgendermaßen aufzubauen

SELECT dat.*, test.*
 FROM Table_A dat, Table_B test
 WHERE dat.pid = test.foreign_id ;

tauchen die Felder id, pid, date_creation - eigentlich erwartungsgemäß - im Result des Ganzen nur einmal auf.

Gibt es stattdessen eine Syntax, die es ermöglicht alle Felder auszulesen und das Ergebnis z.B. über einen Punkt-Operator (oder ein mehrdimensionales Array) zu referenzieren ?
also ein Result in etwa dieser Form zu erhalten :

$row = mysql_fetch_array($res, MYSQL_ASSOC);

echo $row['dat.date_creation'];  // Wert aus Table_A
echo $row['test.date_creation']; // Wert aus Table_B

Das und wie ich das Ganze mit mehreren Queries erledigen kann, weiß ich. Geht´s auch mit einem ?

Bin für jeden Tip oder ein "Geht nicht." dankbar.

Gruß, Peter

  1. select dat.date_creation as A, test.date_creation as B from dat, test where[..]

    hoffe das hilft dir schon mal weiter, die spalten heissen dan A und B die zurückgegeben werden.

    1. Jou, danke, das ist schonmal eine Lösung.

      Das funktioniert aber nur mit einzelnen Werten ?

      Denn es geht nicht, wenn ich´s als

      select dat.* as A, test.* as B where

      formuliere. Gibt´s da ne Lösung ?

      Gruß, Peter

      1. select dat.date_creation as A, test.date_creation as B, dat., test. from dat, test where[..] dann kriegst du alle felder von dat und test sowie die Felder A und B

        oder ich hab dein problem nett gerafft ;-)

        1. oder ich hab dein problem nett gerafft ;-)

          Doch, hast Du... :-) ... ich wollt´s bloß _ganz_ einfach haben und direkt alle Felder in unterschiedliche Arrays einlesen... aber so geht´s auch.

          Danke nochmal,
          Peter

          1. oder ich hab dein problem nett gerafft ;-)

            ok,

            wenn du in zwei arrays einlesen willst, dann benutz zwei queries. erst fragst du alle zeilen von dat ab, wo die id test entspricht und liest das ganze in Array A ein, Array B genauso bloss umgekehrt.

      2. use Mosche;

        Das funktioniert aber nur mit einzelnen Werten ?
        Denn es geht nicht, wenn ich´s als
        select dat.* as A, test.* as B where
        formuliere. Gibt´s da ne Lösung ?

        Meines Wissens nicht. Allerdings ist es keine gute Idee, ein select * zu machen.
        Grund: Dein Code wird dadurch unleserlicher, weil man erst herausfinden muss, was überhaupt alles abgefragt wird. Auch die Reihenfolge der Attribute ist dann eindeutig.

        use Tschoe qw(Matti);

        --
          Anyone who quotes me in their sig is an idiot. -- Rusty Russell.