Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 21

Thema: Kleine Knobelaufgabe

  1. #1
    Registrierter Benutzer
    Registriert seit
    18.06.2002
    Beiträge
    11

    Kleine Knobelaufgabe

    Hallo,

    ich bin noch ein wenig neu in der mySQL Thematik und habe eine Frage.

    Ich habe in einer Tabelle zwei Unterschiedliche UserID (eben von 2 Personen), deren Name ich über eine Usertabelle ermitteln möchte. Bekomme ich das in eine sql-anfrage ?

    Details

    subject message Absenderid empfägerid

    blablabla testtest 121212 242424
    xxxxxxxx huhuhu 321321 654654

    wie kann ich die Namen in einem Schwung ermitteln ??

    Vielen Dank !!!

  2. #2
    Registrierter Benutzer
    Registriert seit
    17.09.2001
    Ort
    Switzerland
    Beiträge
    28
    Hi

    Du musst mit Foreign Key (Fremdschlüssel) arbeiten. Dieser kannst du beim erstellen der ersten Tabelle der Spalte absenderid und empfängerid zuweisen. Der Fremschlüssel muss dann auf die id der User Tabelle verweisen.

    Zur Abfrage:

    SELECT name FROM usertabelle WHERE iduser IN (SELECT empfängerid FROM erstetabelle);

    So könnte das aussehen!

    Cyrill

  3. #3
    Registrierter Benutzer
    Registriert seit
    18.06.2002
    Beiträge
    11
    Ich glaube, wir reden von der gleichen Sache.

    Tabelle 1
    subject message Absenderid empfägerid
    blablabla testtest 121212 242424
    xxxxxxxx huhuhu 321321 654654

    Tabelle 2

    Userid Name
    121212 Jennifer
    242424 Horst
    321321 Heinz
    654654 Jörg


    Die Userid ist der Fremdschlüssel. Ich würde meine Anfrage anfangen...

    select
    table1.subject
    table1.message
    table2.name
    table2.name
    table2.name
    from table1
    join left table2 on (table1.absenderid = table2.userid and
    table1.empfängerid = table2.userid)

    aber logischerweise geht die nicht, da die db ja nicht weiß, welche namen sie da eintragen soll. Hier brauche ich Eure Hilfe.

  4. #4
    Registrierter Benutzer
    Registriert seit
    17.09.2001
    Ort
    Switzerland
    Beiträge
    28
    Hi

    Versuch es mal mit folgendem SQL Command!

    SELECT tabelle1.subject, tabelle1.message,
    (SELECT tabelle2.name FROM tabelle2 WHERE tabell2.iduser = tabelle1idempfänger) AS empfängername,
    (SELECT tabelle2.name FROM tabelle2 WHERE tabell2.iduser = tabelle1idabsender) AS absendername
    FROM tabelle1;


    Cyrill

  5. #5
    Registrierter Benutzer
    Registriert seit
    18.06.2002
    Beiträge
    11
    oh cool. Ich dachte, Untertabellen gehen bei mysql nicht. Werde es gleich ausprobieren. Durch das AS empfängername kann ich die neue Zelle direkt mit empfängername ansprechen, oder ?


    Vielen Dank soweit.

  6. #6
    Registrierter Benutzer
    Registriert seit
    17.09.2001
    Ort
    Switzerland
    Beiträge
    28
    Hi...

    mhh ich bin mir nicht mehr ganz sicher ob das mit mysql wirklich geht!
    aber ich denke es sollte schong gehen!

    Ja sollte eigentlich gehen wenn man es mit AS definiert...!! Und sonst kannst du es ja auch mit der spaltennr angeben!

    Cyrill

  7. #7
    Registrierter Benutzer
    Registriert seit
    18.06.2002
    Beiträge
    11
    ok, ich check das und geb dann wieder bescheid.

  8. #8
    Registrierter Benutzer
    Registriert seit
    18.06.2002
    Beiträge
    11
    leider geht es nicht. Wie es scheint sind in der mysql 4.0 erst die ersten Multitable-Ansätze zu finden. Meine Wünsche hat wohl noch keiner geäußert.

    jörg

  9. #9
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    die sache ist relativ einfach. Du kannst in einen select eine Tabelle mehrfach einbinden:


    (m=mail,ua=user-absender,ue=user-empfänger)

    select
    m.subject,
    m.message,
    from table1 m,table2 ua,table2 ue
    where m.absenderid=ua.userid
    and m.empfängerid =ue.userid



    ps: deine tabellen heissen aber nicht wirklich table1 und table2 ?!

    pps: mysql kann schon lange mit mehreren tabellen gleichzeitig umgehen. Was du eigentlich meintest sind subselects; und die sollte jetzt wohl gehen.
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  10. #10
    Registrierter Benutzer
    Registriert seit
    18.06.2002
    Beiträge
    11
    meine Tabelle heißen anders. Mein Problem ist auch bei weiten komplizierter. Aber das ist die Kernfrage. Ich werde das gleich mal testen.

  11. #11
    Registrierter Benutzer
    Registriert seit
    18.06.2002
    Beiträge
    11
    noch eine Frage. Ich brauche die Verknüpfung über Left Join, also so:

    select
    m.subject,
    m.message,
    ua.username as Absendername,
    ue.username as Empfaengername
    from table1 m
    left join table2 ua ON (m.absenderid=ua.userid)
    left join table2 ue ON (m.empfängerid =ue.userid)

    Aber genau hier meldet die db, das ua.username eine unbekannte Spalte sei.

    Habt Ihr hier auch noch mal ein Hinweis ?

  12. #12
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    wenn ich table2 so sehe heisst die spalte "name" und nicht "username"
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  13. #13
    Registrierter Benutzer
    Registriert seit
    18.06.2002
    Beiträge
    11
    richtig, aber das liegt nur daran, dass wir hier ein beispiel gebaut haben, was ich nicht konsequent weitergeführt habe. Mein original ist in der sicht stimmig.

    Trotzdem kann schein MySQL nicht mit Tabellen Alias im Left join umgehen, also zum Beispiel
    left join table2 Alias ON (m.absenderid=Alias.userid)

    Mache ich da was falsch ?

  14. #14
    Registrierter Benutzer
    Registriert seit
    14.06.2002
    Beiträge
    6
    Hi,
    wie siehts so aus?

    PHP-Code:
    SELECT a.subject a.message a.empfägerid b.name
                                 FROM tabelle1 a
                                 LEFT JOIN tabelle2 b
                                 ON a
    .absenderid b.userid 
    MfG
    L SuSE 8.0
    A 1.3.23
    M 3.23.43
    P 4.21
    www.web-scripte.com
    forum.web-scripte.com

  15. #15
    Registrierter Benutzer
    Registriert seit
    18.06.2002
    Beiträge
    11
    MySQL meldet:


    Unknown column 'b.userid' in 'field list'.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •