abfrage über zwei tabellen bringt fehler

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

  • abfrage über zwei tabellen bringt fehler

    ich habe zwei fragen:

    1. Farge:

    ich habe zwei tabellen

    1 tabelle kunde (knr(primary), vorname, name, kasse, privat)
    2 tabelle rechnung (rnr(primary), knr, datum, status)

    ich möchte z.b. die komplette tabelle rechnung ausgeben mit zu dem feld knr passenden "vornamen" und "namen" aus der tabelle kunden mit ausgegeben werden.

    ich verwende diesen select:
    SELECT rechnung.rnr, rechnung.knr, kunden.vorname, kunden.name, rechnung.datum
    from kunden, rechnung
    where rechnung.status="1"

    allerdings bekomme ich dann alle kunden mit der einen offenen rechnung ausgegeben


    2. Frage:

    ich habe die felder kasse und privat in der tabelle kunde, diese felder werden jeweils immer nur mit "1" befüllt wenn die bedingung zutrifft, ansonsten mit "0".

    das funktioniert auch alles (mit radioboxen)

    allerdings wenn ich dann in der ausgabe nicht bei kasse oder privat eine 1 oder 0 ausgegeben haben will, sondern ein "ja" oder "nein" bekomme ich einen fehler (Parse error: parse error, unexpected T_IF in C:\Programme\xampp)

    das ist die ausgabe :

    /*Ausgabe*/
    echo "<table width=100% border=0 align=left bgcolor=#C4D7EB class=text> ";
    while ($row = mysql_fetch_row ($result)) {
    echo "<tr > <td>"."Rechnungs Nr.: " . $row[0] . "</td>";
    echo "<td>"."&nbsp;&nbsp;&nbsp;Kunden Nr: " . $row[1] . "</td>";
    echo "<td>"."&nbsp;&nbsp;&nbsp;Vorname: " . $row[2] . "</td>";
    echo "<td>"."&nbsp;&nbsp;&nbsp;Name: " . $row[3] . "</td>";
    echo "<td>"."&nbsp;&nbsp;&nbsp;Kasse: ". if($row[4]==1){echo "ja";}else {echo"nein";}."</td>";
    echo "<td>"."&nbsp;&nbsp;&nbsp;Privat: " . $row[5] . "</td>";
    echo "<td>"."&nbsp;&nbsp;&nbsp;Datum: " . $row[6] . "</td></tr>";
    }
    echo "</table>";

  • #2
    Re: abfrage über zwei tabellen bringt fehler

    Zu 1) Beschäftige dich mit JOINs. Siehe bspw. Sticky-Thread im SQL-Forum.

    Zu 2) Das Problem hat absolut nichts mit der Datenbankabfrage zu tun.
    PHP-Code:
    echo "<td>"."&nbsp;&nbsp;&nbsp;Kasse: ". if($row[4]==1){echo "ja";}else {echo"nein";}."</td>"
    Dann machst du nach dem echo mal ein ordentliches Semikolon, um diese Anweisung abzuschliessen - danach das if als neue Anweisung, und dann noch mal ein echo für das abschliessende TD.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      zu 2.

      echo "<td>"." Kasse: ". if($row[4]==1){echo "ja";}else {echo"nein";}."</td>";


      mach zu:
      echo "<td>"." Kasse: ";
      if($row[4]==1){echo "ja";} else {echo "nein";}
      echo "</td>";

      zu 1.

      befass dich da noch mal genauer mit selects über zwei table, oder setz die anfrage in zwei verschiedenen selects ab - was natürlich performance-lastiger werden könnte.

      dein query sagt nicht anderes als: hol mit dies und das und davon alles aus den tables wo der rechnungsstatus = 1 ist. und da 1 wohl offener posten heißt, macht dein query auch genau das, was du gesagt hast



      edit:
      arkos zu langsam heute
      **********
      arkos
      **********

      Kommentar


      • #4
        ok 2. funzt -> danke !

        hm ja ich weiß schon, das ich mich mit joins beschäftigen muß, habe da habe ich gestern nacht um halb zwei das erste mal was mit gemacht...

        Kommentar


        • #5
          hmm ich bekomme es nicht hin, die Spalte status wird einfach nicht erkannt?

          so sieht jetzt meine abfrage aus.
          diese fehlermeldung bekomme ich :
          0: 1054: Unknown column 'status' in 'from clause'
          Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\Programme\xampp\...

          SELECT
          tr.rnr, tr.knr, tk.vorname, tk.name, tr.datum
          from
          kunden tk
          LEFT JOIN rechnung tr USING(status)
          WHERE
          tr.status IS NULL

          Kommentar


          • #6
            Du kannst nicht über Status joinen, den gibt es nicht in beiden Tabellen.

            Du willst stattdessen über... na, was verbindet die Tabellen?
            ich glaube

            Kommentar


            • #7
              na klar... danke!!!

              Kommentar

              Lädt...
              X