kostenloser Webspace werbefrei: lima-city


Wie sprech ich mit php die Daten an

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    karpfen

    Kostenloser Webspace von karpfen

    karpfen hat kostenlosen Webspace.

    Ich habe in einer Datenbank folgende Konstellation:

    Tabelle Mitarbeiter:

    M_ID VORNAME NACHNAME ...

    Tabelle Abteilungen:

    A_ID BEZEICHNUNG ...

    Tabelle Häuser:

    H_ID TELEFON FAX ...

    Tabelle Beziehung:

    B_ID M_ID A_ID H_ID

    In der Tabelle Beziehungen sind die PKs der anderen Tabellen als FKs integriert.


    Wenn ich jetz mit PHP auf die Daten zugreifen will, dann mach ich das mit einem SQL-Befehl:

    $abf_gf = \"SELECT * FROM eke_beziehung WHERE B_ID=0\";
    $erg_gf = mysql_query($abf_gf);
    							
    							
    while($row = mysql_fetch_object($erg_gf))
    {
    echo $row->NACHNAME;
    }


    Der Code ist nicht korrekt, im Prinzip will ich auf den einen bestimmten Datensatz (B_ID = 0) zugreifen und dann den NACHNAMEN des Mitarbeiters ausgeben. Da in dieser Tabelle ja im Datensatz nur die ID des Mitarbeiters eingetragen ist, stellt mich das vor ein Problem. Wie spreche ich nun den NAMEN an und nicht nur die ID????

    Wäre über einen Tip sehr dankbar. Falls noch was unklar ist einfach nachfragen ;)

    Merci
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Wenn ich es richtig verstehe, kannst du einfach einen JOIN anwenden um dein Problem zu lösen.
    In der Art müsste es so aussehen:
    <?
    $sql=\"
    SELECT
    tabelle_Mitarbeiter.VORNAME AS vorname,
    tabelle_Mitarbeiter.NACHNAME AS nachname,
    tabelle_Beziehungen.B_ID AS b_id,
    tabelle_Beziehungen.M_ID AS m_id,
    tabelle_Beziehungen.A_ID AS a_id,
    tabelle_Beziehungen.H_ID AS h_id // jenachdem was du alles aus den Tabellen haben willst
    FROM
    tabelle_Mitarbeiter,
    tabelle_Beziehungen
    WHERE
    tabelle_Beziehungen.B_ID = 0
    \";
    ?>
  4. Autor dieses Themas

    karpfen

    Kostenloser Webspace von karpfen

    karpfen hat kostenlosen Webspace.

    Jo, so ungefähr, aber warum verknüpf ich dann die Tabellen miteinander, wenn ich doch wieder die Daten aus der Ursprungstabelle Mitarbeiter ziehen muss :(((((

    Danke aber.

    Habe gehofft, dass geht weniger umständlich ;)

    Beitrag geändert: 7.2.2008 11:11:10 von karpfen
  5. Vielleicht geht es auch noch weniger umständlich, aber mir würde spontan nichts einfallen.
    Du musst ja irgendwie die Daten wieder aus der Tabelle auslesen, in der sie enthalten sind. Nur über die ID die Daten zu bekommen geht ja nicht, bzw. nur indem du die Tabellen über einen JOIN verknüpfst. Der Vorteil ist, dass du nicht erst die ID aus der einen Tabelle auslesen musst um damit ein neues Query an die andere Tabelle zu formulieren, sondern es in einer Anfrage drinne hast.
  6. Autor dieses Themas

    karpfen

    Kostenloser Webspace von karpfen

    karpfen hat kostenlosen Webspace.

    Alles klar, hab grad auf einer SQL-Webseite nachgeschaut. Scheint schon so das Beste zu sein ;)

    Dank dir recht herzlich!
  7. Autor dieses Themas

    karpfen

    Kostenloser Webspace von karpfen

    karpfen hat kostenlosen Webspace.

    Probier ich es mit deiner Variante aus, dann bekomm ich folgende Fehlermeldung:

    mysql_fetch_object(): supplied argument is not a valid MySQL result resource in ........

    Mein SQL-Statement ist momentan folgendes:

    $sql= \"SELECT 
    mitarbeiter.VORNAME AS vorname,
    mitarbeiter.NACHNAME AS nachname 
    FROM 
    mitarbeiter,
    beziehungen 
    WHERE 
    beziehungen.B_ID = 0 AND beziehungen.M_ID = mitarbeiter.M_ID\";
  8. Das heißt soviel wie, dass du kein Ergebnis bekommst.
    Die Syntax ist eigentlich richtg, denn ich hab bei mir ein ähnliches Statement und das geht so. Es könnte sein, dass er die \"0\" bei beziehungen.B_ID = 0 als NULL oder FALSE interpretiert. Wenn in der Tabelle wirklich \"0\" steht, könntest du versuchen es so zu schreiben beziehungen.B_ID = \'0\'. Oder er mag die Großschreibung der Spaltennamen nicht. Das wäre so das einzige was mir grade auffällt.

    Wenn ich solche Fehler erhalte, dann versuche ich es zurück zu verfolgen, also das Query soweit zu vereinfachen, dass ich auf jeden Fall ein Ergebnis erhalte und dann die Bedingungen wieder einzufügen und zu sehen, wo es grade hängt.
  9. Autor dieses Themas

    karpfen

    Kostenloser Webspace von karpfen

    karpfen hat kostenlosen Webspace.

    Jo, hehe danke für den Tip,
    Hab den Fehler noch gefunden.
    Man sollte natürlich die Namen der Tabellen scho richtig schreiben und nicht aus

    beziehung

    >>

    beziehungen

    machen.:blah:
  10. e********l

    im Prinzip will ich auf den einen bestimmten Datensatz (B_ID = 0) zugreifen und dann den NACHNAMEN des Mitarbeiters ausgeben. Da in dieser Tabelle ja im Datensatz nur die ID des Mitarbeiters eingetragen ist, stellt mich das vor ein Problem. Wie spreche ich nun den NAMEN an und nicht nur die ID????


    Ganz einfach:

    SELECT    b.B_ID, m.NACHNAMEN
    FROM    mitarbeiter AS m
            INNER JOIN      beziehung AS b
                    ON      b.M_ID = m.M_ID
    WHERE   b.B_ID = 0


    Bitte sehr.

    //edit: Falls die Mitarbeiter in der Beziehungstabelle nur einmal vorkommen und die restlichen Daten mehrmals sein können, könnte man auch B_ID weg lassen und einen kombinierten PK aus den FKs erzeugen.


    Beitrag geändert: 7.2.2008 13:26:01 von evil-devil
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!