Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabellen miteinander verknüpfen

Einklappen

Neue Werbung 2019

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

  • Gast-Avatar
    Ein Gast erstellte das Thema Tabellen miteinander verknüpfen.

    Tabellen miteinander verknüpfen

    Tag zusammen,

    ich habe ein Problem und weiß leider nicht, wie ich es lösen soll. Folgende Situation: Ich lese die Verbindungsdaten meiner Telefonanlage aus und speichere sie in einer Tabelle namens "log". In einer Spalte steht die Nummer des Teilnehmers (number). Nun habe ich eine zweite Tabelle (callers) mit zwei Spalten (person, number) angelegt, in welcher einige Rufnummern vorhanden sind.

    Ich möchte das ganze nun so haben, dass ich bei der Ausgabe den Namen des Anrufenden dort mit stehen habe. Derzeit hab ich das so gelöst:

    Code:
    select log.id, log.date, log.time, log.number, log.msn, callers.person, callers.number where log.number = callers.number order by log.date")
    Da es ja (leider ) auch Personen gibt, die ihre Nummer nicht senden, bleibe log.number bei einigen Einträgen leer und genau diese Erscheinen nicht in meiner Tabelle. Ist ja auch logisch denn in diesem Fall ist kann log.number ja nicht gleich callers.number sein, da log.number leer ist.

    Wie löse ich das?

    Viele Grüße

    Christoph

  • Gast-Avatar
    Ein Gast antwortete
    Es funktioniert!

    Vielen Dank an alle, die mir hier in diesem Thread auf meine Fragen geantwortet haben!

    Gruß,
    DerStandart

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Empfohlende, leistungsfähigere Alternativen: mysql_fetch_row(), mysql_fetch_array(), mysql_fetch_assoc() und mysql_fetch_object().
    (aus http://de.php.net/manual/de/function.mysql-result.php)

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Vielen Dank für Deine Mithilfe, die Fehlermeldung ist nun weg.

    Eine Frage - das ist dann hoffentlich die Letzte - habe ich noch. Wie komme ich dann an den Absender ran? Die anderen Werte hole ich z.B. mit
    Code:
    $id = mysql_result($get_callers, $i, 0);
    Oder sollte ich generell eine andere Art nehmen? Sorry für die vielen Fragen

    Gruß,
    DerStandart

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Du musst den ganzen Spalten Aliase-Namen geben,

    also z.B. so



    PHP-Code:
    $SQL "SELECT log.ID as ID, date_format(log.date, '%d.%m.%Y') as datum, log.time as time, log.number as lnumber, callers.number as cnumber, callers.person as person 
        FROM log 
        LEFT JOIN callers ON log.number = callers.number 
        ORDER BY log.ID ASC"

    [/code]

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Danke für Deine Hilfe!

    Hab das ausprobiert, es erscheint!

    Parse error: parse error, unexpected ')' ... in line ...

    In der Zeile steht
    Code:
    ORDER BY log.ID ASC");
    Entferne ich das ) dann kommt:

    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY log.ID ASC' at line 5

    Ich weiß langsam echt nicht mehr weiter!

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Also ist offensichtlich das SQL-Statment falsch. Wenn du, wie es eigentlich immer geschehen solltest, nach dem mysql_query() nach mysql_error() abfragen würdest, wüsstest du mehr:
    PHP-Code:
    $SQL "SELECT log.ID, date_format(log.date, '%d.%m.%Y') as datum, log.time, log.number, callers.number, callers.person 
        FROM log 
        LEFT JOIN callers ON log.number = callers.number 
        ORDER BY log.ID ASC"
    );
    echo 
    "$SQL 
    "
    ;   //  nur für Testzwecke
    $get_calls mysql_query($SQL) or die(mysql_error());
    $number_of_calls mysql_num_rows($get_calls); 

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hier:

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ... on Line 64.

    Line 64:
    Code:
    $number_of_calls = mysql_num_rows($get_calls);

    Einen Kommentar schreiben:


  • lazydog
    antwortet
    Zitat von DerStandart
    Moin,

    ich habe es alles einmal ausprobiert, klappt leider nicht.

    Code:
    $number_of_calls = mysql_num_rows($get_calls);
    liefert eine Fehlermeldung.
    Und wo bitte ist die Fehlermeldung

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    $get_calls = mysql_query("SELECT log.ID, date_format(log.date, '%d.%m.%Y') as log.date, log.time, log.number, callers.number, callers.person FROM log LEFT JOIN callers ON log.number = callers.number ORDER BY log.ID ASC");
    Ich bin mir nicht sicher, aber ich glaube das mit dem
    Code:
    as log.date
    funktioniert so nicht, man darf glaube ich als Alias keine Namen nehmen die in den original Tabellen vorkommen. Der Join an sich sieht in Ordnung aus.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Moin,

    ich habe es alles einmal ausprobiert, klappt leider nicht.

    Code:
    $number_of_calls = mysql_num_rows($get_calls);
    liefert eine Fehlermeldung. $get_calls ist in diesem Fall die Abfrage mit dem LEFT JOIN.

    Hier noch die Abfrage:
    Code:
    $get_calls = mysql_query("SELECT log.ID, date_format(log.date, '%d.%m.%Y') as log.date, log.time, log.number, callers.number, callers.person FROM log LEFT JOIN callers ON log.number = callers.number ORDER BY log.ID ASC");
    Weiß jemand, wo der Fehler liegen könnte? Ist an dfer Abfrage was falsch, oder warum liefert "mysql_num_rows" kein korrektes Ergebnis?

    Gruß,
    DerStandart

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Wenn du zwei Tabellen hast, t1 und t2, und sie über einen Left Join verbindest werden alle Felder aus t1 genommen und die aus t2 bei denen die Referenz (t1.number = t2.number) passt.
    Probier's einfach mal aus.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Zitat von comci
    Habt ihr schon mal was von Joins gehört?
    Leider nicht, sonst hätte ich ja diesen Thread nicht eröffnet !

    Zitat von comci
    Selektiert alle aus log und alle aus callers wo callers.number = log.number
    Hört sich sehr gut an, was passiert jedoch wenn log.number keinen Eintrag enthält?

    Gruß,
    DerStandart

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Habt ihr schon mal was von Joins gehört?

    select log.id, log.date, log.time, log.number, log.msn, callers.person, callers.number where log.number = callers.number order by log.date

    SELECT log.id, log.date, log.time, log.number, log.msn, callers.person, callers.number FROM log LEFT JOIN callers on callers.number = log.number ORDER BY log.date

    Selektiert alle aus log und alle aus callers wo callers.number = log.number

    http://www.w3schools.com/sql/sql_intro.asp

    greets
    Com.Ci

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    So, habe es nun geschafft.

    Es macht aus meiner Sicht keinen Sinn, alle Nummern/Namen zu laden, deswegen habe ich es jetzt so gemacht:

    Code:
    $abgleichen = mysql_query('SELECT person, number FROM callers WHERE `number` LIKE  '$telefonnummer' ORDER BY person');
    Den Rest eben noch drumherum.

    Da diese Lösung doch ein wenig braucht, um dargestellt zu werden und jemand evtl. eine bessere Lösung parat hat, kann er sie mir gerne zukommen lassen.

    Vielen Dank auf jeden Fall erstmal!

    Einen Kommentar schreiben:

Lädt...
X