+ Antworten
Ergebnis 1 bis 7 von 7

Thema: mysql Abfrage so einfach wie möglich

  1. #1
    TP-Insider dieter99 ist auf einem guten Weg Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719

    mysql Abfrage so einfach wie möglich

    Hallo,
    ich habe in mysql eine Tabelle (1) mit folgender Struktur:

    Spalte 1 --- Spalte 2 --- Spalte 3 --- Spalte 4
    ---4-----------7-----------9-----------2----
    ---1-----------6-----------4-----------9----
    ---2-----------4-----------8-----------6----

    Die Tabelle 2 besteht aus:

    id --- name
    1------Testeintrag1
    2------Testeintrag2
    3------Testeintrag3
    4------Testeintrag4
    5------Testeintrag5
    ...

    Ich möchte nun aus Tabelle 1 die 2. Zeile auslesen:
    ---1-----------6-----------4-----------9----

    Die Zahlen sollen nun durch die Namen aus Tabelle 2 ersetzt werden.

    Kann ich so etwas mit 1 mysql-Anweisung realisieren?

    Folgendes Beispiel:
    SELECT
    tabelle1.spalte1,
    tabelle1.spalte2,
    tabelle1.spalte3,
    tabelle1.spalte4,
    tabelle2.id,
    tabelle2.name,
    FROM
    tabelle1
    LEFT JOIN tabelle2
    ON tabelle2.id=tabelle1.spalte1

    WHILE ($daten=...mysql_fetch_array...)
    {
    echo $daten[5];
    }

    In diesen Fall wird mir die 1. Spalte umgesetzt (statt die Zahl der Namen).

    Gibt es eine Möglichkeit um alle 5 Spalten gleichzeitig umzusetzen???

  2. #2
    TP-Member be|chameleon ist auf einem guten Weg
    Registriert seit
    May 2006
    Ort
    Fürth
    Beiträge
    49
    Was genau meinst du denn mit umsetzen? Anzeigen der Daten aus der DB?

    Schonmal daran gedacht was du machst wenn du deine Tabelle um eine Spalte erweiterst und du diesen Wert zusätzlich zu den jetzigen auch ausliest? Dann müsstest du in diesem Fall den Index in deiner Ausgabe verändern, sofern der neue Wert vor dem Wert ausgelesen wird den du mit $daten[5] ausgibst. Wenn du natürlich 100% sicher bist das neue Spalten wenn dann am Ende der Tabelle hinzugefügt werden ist das mit dem numerischen Index natürlich völlig okay.

    mysql_fetch_assoc() wäre da wohl eine bessere Alternative, es seidenn du hast irgendwas anderes vor...

  3. #3
    TP-Insider dieter99 ist auf einem guten Weg Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719
    Mit umsetzen meine ich folgendes:

    Ich möchte aus der 1. Tabelle z.B. die 2. Zeile auslesen:

    ---1-----------6-----------4-----------9----

    Diese Nummern sind ID`s aus der Tabelle 2.

    Für 1 (Tabelle 1) soll Testeintrag1 (aus Tabelle2) eingesetzt werden, für die Zahl 6 soll Testeintrag 6 eingetragen werden usw.

    Wie kann ich die Zahlen 1, 6, 4, 9 auf einen Zug mit der Tabelle 2 verknüpfen sodass ich statt den Zahlen die Namen aus Tabelle 2 bekomme?


    Übrigens danke für den mysql_fetch_assoc() Tipp

  4. #4
    TP-Member be|chameleon ist auf einem guten Weg
    Registriert seit
    May 2006
    Ort
    Fürth
    Beiträge
    49
    ahh... jetzt verstehe ich erst richtig was du willst.

    vielleicht sollte du versuchen deine tabellenstruktur so zu vereinfachen bzw. zu normalisieren das du es mittels eines LEFT JOINS realisieren kannst, momentan sehe ich eigentlich keine andere Möglichkeit als die das du eben 4 verschiedene Queries absetzen müsstest, was im eigentlichen totaler Overkill wäre, je nachdem wie oft du das machst und wieviele Datensätze vorhanden sind.

    Da ich leider nicht genau weiß was du da programmieren willst kann ich hier auch kein konkretes Beispiel geben wie das anders aussehen könnte.

    Gehen wir mal davon aus du möchtest eine Art Freunde System entwickeln...

    Hierfür würdest du zwei Tabellen benötigen:

    table_friends mit friend_id (auto increment), friend_user_id
    table_users mit user_id, user_username

    In table_friends hast du jetzt 4 Einträge:

    1;50
    2;60
    3;70
    4;80

    In table_users stehen logischerweise alle User mit ihrer User-ID (user_id) und eben ihrem Usernamen (user_username):

    50;username1
    60;username2
    70;username3
    80;username4

    Mit Hilfe eines JOINS der wie folgt aussehen müsste könntest du nun ohne Probleme die entsprechenden friend_user_id's aus der table_friends Tabelle einem konkreten Usernamen aus table_users zuordnen.

    Code:
    SELEFT
      table_friends.friend_id,
      table_friends.friend_user_id,
      table_users.user_id,
      table_users.user_username
    FROM
      table_friends
    LEFT JOIN
      table_users AS table_users
    ON
      table_users.user_id = table_friends.friend_user_id
    WHERE
      table_friends.friend_id = 2;
    Um aus table_friends auch eindeutig Einträge auslesen zu können brauchst du hier ja auch ein eindeutige Identifikation an Hand einer id o.ä. war aus deiner Darstellung deiner Tabelle jetzt nicht ganz zu erkennen.

    Vielleicht hilft dir die Info hier ja, eine andere Idee wie man es mit deiner jetzigen Tabellenstrukturierung machen könnte, ausser eben verschiedene Queries, habe ich gerade nicht. Wenn mir noch was einfällt poste ich es selbstverständlich...
    Geändert von be|chameleon (16.05.2006 um 12:14 Uhr)

  5. #5
    TP-Insider dieter99 ist auf einem guten Weg Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719
    Danke für die Hilfestellung. Wie man 2 Tabellen verbindet ist klar. Mir geht es nur darum wie ich alle IDs auf einmal verknüpfen kann.

    Tabelle 1 nochmal:
    ---1-----------6-----------4-----------9----

    Ich möchte jetzt auf einen Zug 1,6,4 und 9 gegen den NAmen aus Tabelle 2 austauschen.

  6. #6
    TP-Insider dieter99 ist auf einem guten Weg Avatar von dieter99
    Registriert seit
    Dec 2001
    Ort
    Oberfranken
    Beiträge
    719
    noch eine kurze Zwischenfrage zu LEFT JOINS:

    Was bedeutet "AS table_users" eigentlich? Kann man diesen Code nicht einfach weglassen?

    ...
    LEFT JOIN
    table_users
    ...

  7. #7
    TP-Member be|chameleon ist auf einem guten Weg
    Registriert seit
    May 2006
    Ort
    Fürth
    Beiträge
    49
    kannste weglassen ja.

    ich verwende bei meinen scripten bzw. datenbanken nur immer zusätzlich ein prefix wie z.b. "helpdesk_" oder ähnliches und damit ich das nicht immer komplett auscshreiben muss mach ich immer ein AS ist nur gewohnheit.

    was du machen willst war mir ja schon bewusst, was ich eben denke ist das du das auf keinen fall mit einem LEFT JOIN hinbekommen wirst du wirst eben 4 queries machen müssen mit jeweils der richtigen id und das ist meiner Meinung nach unklug, da sollte man lieber die Tabellenstruktur abändern... sofern da jetzt nicht ein riesen System hinter steht und das enormen Aufwand bedeutet.

    Wie gesagt habe ich atm keine andere Idee, wenn doch melde ich mich nochmal!

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51