Tabellen verbinden?!

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

  • Tabellen verbinden?!

    Ich möchte zwei Tabellen miteinander verbinden und die Ausgabe nach einer Abteilungsnummer (abtnr) sortieren.

    Die Tabbellen ausgabe sieht zur Zeit so aus wenn ich jede Tabelle alleine aufrufe:

    abttag |abtnr|abtvl| abtvk
    2002-07-01|011 | |19.60
    2002-07-01|013 | |16.60
    2002-07-01|014 | |30.00
    2002-07-01|016 | |12.50
    2002-07-01|001 |3.00 |
    2002-07-01|003 |12.00|
    2002-07-01|005 |2.00 |
    2002-07-01|015 |15.00|
    2002-07-01|024 |21.00|

    soll aber so aussehen

    abttag |abtnr|abtvl| abtvk
    2002-07-01|001 |3.00 |
    2002-07-01|003 |12.00|
    2002-07-01|005 |2.00 |
    2002-07-01|011 | |19.60
    2002-07-01|013 | |16.60
    2002-07-01|014 | |30.00
    2002-07-01|015 |15.00|
    2002-07-01|016 | |12.50
    2002-07-01|024 |21.00|

    Mein jetziger Quellcode
    PHP-Code:
    $db_neu_querry "SELECT * FROM `$db_neu_vk`,`$db_neu_vl`
    WHERE `
    $db_neu_vk`.`abttag` = '$tag' AND `$db_neu_vl`.`abttag` = '$tag'
    ORDER BY `
    $db_neu_vk`.`abtnr`,`$db_neu_vl`.`abtnr` ASC";

    $db_neu_querry2 mysql_query ($db_neu_querry
    or die (
    "<p><font size='2' face='Arial'><b>".mysql_error()."</b></font></p>");
    while(
    $row mysql_fetch_array($db_neu_querry2)) {

    $neu_abttag $row['abttag'];
    $neu_abtnr $row['abtnr'];
    $neu_abtvl $row['abtvl'];
    $neu_abtvk $row['abtvk'];

    echo 
    "<table border='1' cellpadding='0' cellspacing='0'>";
    echo 
    "<tr><td width='80' height='6' align='center' bgcolor='#FFFFFF'><font size='2' face='Arial'>$neu_abttag</font></td>";
    echo 
    "<td width='40' height='6' align='right' bgcolor='#FFFFFF'><font size='2' face='Arial'>$neu_abtnr</font></td>";
    echo 
    "<td width='60' height='6' align='right' bgcolor='#FFFFFF'><font size='2' face='Arial'>$neu_abtvl</font></td>";
    echo 
    "<td width='60' height='6' align='right' bgcolor='#FFFFFF'><font size='2' face='Arial'>$neu_abtvk</font></td>";
    echo 
    "</tr></table>";

    geht so nicht!

    So sieht mein Script bei der ausgabe aus...

    2002-07-01 001 3.00 19.60
    2002-07-01 003 12.00 19.60
    2002-07-01 005 2.00 19.60
    2002-07-01 015 15.00 19.60
    2002-07-01 024 21.00 19.60
    2002-07-01 025 1.00 19.60
    2002-07-01 026 28.00 19.60
    2002-07-01 027 25.00 19.60
    2002-07-01 028 2.00 19.60
    2002-07-01 029 28.00 19.60
    2002-07-01 032 67.00 19.60
    2002-07-01 033 9.00 19.60
    2002-07-01 036 3.00 19.60
    2002-07-01 100 101.00 19.60
    2002-07-01 101 11.00 19.60
    2002-07-01 102 11.00 19.60
    2002-07-01 200 20.00 19.60
    2002-07-01 500 4.00 19.60

    Wer kann mir da weiterhelfen???

  • #2
    Meiner Meinung nach kann eine solche Abfrage nicht funktionieren, aus dem Grund dass du Werte von 2 Tabellen abrufst, die eine identische Struktur haben. Das ist nicht Sinn von Datenbanken, die "gleiche" Art von Werte in verschiedenen Tabellen zu speichern.
    M.E. hast du sowas wie ein Zufallsresultat. Schau dir mal das ganze Resultat $db_neu_querry2 an, dann siehst du es selber, was für ein mixed Quark da rauskommt.
    In Theorie sollte ja z.B. $row['abttag'] 2 Werte haben, da die Spalten in beiden Tabellen gleich heissen.

    Mach doch eine einzige Tabelle aus beiden, das kannst du dann problemlos auswerten.

    mfg

    Kommentar


    • #3
      dafür gibt es "UNION",

      welches mySQL aber noch nicht beherscht

      da mußte wohl ein Hilfskonstrukt in deiner
      DB-Klasse bauen (ich hoffe du hast eine)
      und dort 2 Abfragen ausführen, und dann mit PHP sortieren
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #4
        Solange Du keine Verknüpfung zwischen den beiden Tabellen hast bildest Du auf jeden Fall nur ein Karthesisches Produkt ... (Jeder Datensatz der einen Tabelle mit jedem Datensatz der anderen Tabelle)

        Ich würde mal der Meinung von Herrn "CHnuschti" folgen und mir gedanken über den Datenbankentwurf machen ... da scheint mir doch ... wie von CHnuschti bereits angedeutet ... einiges im Argen zu liegen!

        @TBT: Klar gibt's 'ne UNION in MySQL ... allerdings erst ab 4.0.0 ... aber solange die noch kein Provider installiert hat ...
        carpe noctem

        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

        Kommentar


        • #5
          @goth: 4.0.0 hat nur noch kein Provider

          aber nen Fehler in der DB Struktur muß auch nicht zwingend sein. Ich habe da folgendes Konstrukt:
          PHP-Code:
          $nomail $this->query->union(
                  
          "SELECT user_id FROM user_nomail 
                      WHERE nomail_from<NOW() AND nomail_to>Now() 
                      AND user_id in (
          $touser) GROUP BY user_id",
                  
          "SELECT user_id FROM session" 
                      
          ); 
          ermittelt alle User, die derzeit eine Abwesenheitsschaltung aktiviert haben,
          bzw. gerade auf dem Board unterwegs sind
          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Kommentar

          Lädt...
          X