1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

LEFT JOIN macht Probleme!

Dieses Thema im Forum "SQL/ORACLE" wurde erstellt von Chaya_, 13. Januar 2018.

  1. Chaya_

    Chaya_ Member

    Registriert seit:
    5. Juli 2017
    Beiträge:
    31
    Zustimmungen:
    7
    Punkte für Erfolge:
    8
    Geschlecht:
    männlich
    Ort:
    Germany
    Homepage:
    Mit folgender MySQL Abfrage in meinem Script, versuche ich die ID eines Accounts in den eigentlichen Account Username umzuwandeln.

    PHP:
    SELECT account_banned.id, account_banned.bandate, account_banned.unbandate, account_banned.bannedby, account_banned.banreason, account_banned.active
    FROM account_banned
    LEFT JOIN account on account_banned.id = account.username
    ORDER BY account_banned.bandate DESC
    Die Abfrage an sich funktioniert ohne Probleme, allerdings steht anstelle vom Account Username da die Account ID, aber ich möchte da nicht die Account ID, sondern den Account Username haben.

    PHP:
    try {
        $pda = new PDO("mysql:host=" . MYSQL_HOST . ";dbname=" . MYSQL_AUTH_DATABASE, MYSQL_USER, MYSQL_PASSWORD, $pdoOptions);
        $sql = $pda->prepare("SELECT account_banned.id, account_banned.bandate, account_banned.unbandate, account_banned.bannedby, account_banned.banreason, account_banned.active
    FROM account_banned
    LEFT JOIN account on account_banned.id = account.username
    ORDER BY account_banned.bandate DESC"
    );

        if($sql->execute()) {
            $sql->setFetchMode(PDO::FETCH_ASSOC);
        }
    }
    catch(Exception $error) {
        echo '<p>', $error->getMessage(), '</p>';
    }
    So baue ich die Tabelle für das Script auf:

    PHP:
                            <tbody>
                                <?php while($row = $sql->fetch()) { ?>
                                <tr>
                                    <td><?php echo $row['id']; ?></td>
                                    <td><?php echo date('d.m.y H:i:s', $row['bandate']); ?></td>
                                    <td><?php echo date('d.m.y H:i:s', $row['unbandate']); ?></td>
                                    <td><?php echo $row['bannedby']; ?></td>
                                    <td><?php echo $row['banreason']; ?></td>
                                    <td><?php echo $row['active']; ?></td>
                                </tr>
                                <?php } ?>
                            </tbody>
    Und dennoch macht er die ID nicht als Username.

    Anstatt der 2 muss da der betroffene Account mit der ID stehen.

    [​IMG]

    [​IMG]
     
  2. Best Answer:
    Post #2 by CptVince, 13. Januar 2018 (6 points)
  3. CptVince

    CptVince New Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    17
    Zustimmungen:
    11
    Punkte für Erfolge:
    3
    Best Answer
    Dein vergleich fuer die Uebereinstimmung im LEFT JOIN ist nicht richtig. Du laesst aufloesen, wenn die acount_banned.id gleich mit dem account.username ist.

    Hier sollte mit der account.id verglichen werden.

    Im SELECT fuegst du dann account.username, account.id hinzu.

    Hier mal als Beispiel mit den Aenderungen markiert:

    SELECT account_banned.id, account_banned.bandate, account_banned.unbandate, account_banned.bannedby, account_banned.banreason, account_banned.active, account.id, account.username
    FROM account_banned
    LEFT JOIN account on account_banned.id = account.id
    ORDER BY account_banned.bandate DESC

    Update: Wie bereits von @SilverHazard im Chat probiert wurde zu helfen, findest du auf der verlinkten Seite das Bild [​IMG].

    Hier kannst du erkennen, dasss die Mengen vereint werden aber nicht Eigenschaften aus einer Tabelle ueberschrieben!
     
    Zuletzt bearbeitet: 13. Januar 2018
    3HMonkey, SilverHazard und Chaya_ gefällt das.
  4. Chaya_

    Chaya_ Member

    Registriert seit:
    5. Juli 2017
    Beiträge:
    31
    Zustimmungen:
    7
    Punkte für Erfolge:
    8
    Geschlecht:
    männlich
    Ort:
    Germany
    Homepage:
    Werde ich mal versuchen, danke für deine Hilfe.

    Kommt wieder nur die id raus, ich möchte aber den Account Name haben.

    Okay hab es nun angepasst mit der Tabelle :

    Code (Text):
    <td><?php echo $row['username']; ?></td>
    So stimmt es dann auch ;)
     
  5. CptVince

    CptVince New Member

    Registriert seit:
    1. Juli 2017
    Beiträge:
    17
    Zustimmungen:
    11
    Punkte für Erfolge:
    3
    Im PHP sieht die Verwendung dann wie folgend aus:
    PHP:

    <tbody>
                                <?php while($row = $sql->fetch()) { ?>
                                <tr>
                                    <td><?php echo $row['id']; ?> <?php echo $row['username']; ?></td>
                                    <td><?php echo date('d.m.y H:i:s', $row['bandate']); ?></td>
                                    <td><?php echo date('d.m.y H:i:s', $row['unbandate']); ?></td>
                                    <td><?php echo $row['bannedby']; ?></td>
                                    <td><?php echo $row['banreason']; ?></td>
                                    <td><?php echo $row['active']; ?></td>
                                </tr>
                                <?php } ?>
                            </tbody>
     
    Vielleicht mal ueber ein Templating nachdenken in diesem zuge.

    Anmerkung: Falls das hier keine Copy & Paste Loesung fuer ein Problem sein sollte, debugge hier selbst und fuege die fehlenden Teilse selbst zusammen. Die Vorschlaege von mir sind Hilfestellungen und keine Komplett-Loesung!
     
  6. Chaya_

    Chaya_ Member

    Registriert seit:
    5. Juli 2017
    Beiträge:
    31
    Zustimmungen:
    7
    Punkte für Erfolge:
    8
    Geschlecht:
    männlich
    Ort:
    Germany
    Homepage:
    Nein, das da st kein CopyPaste, alles selber bisher geschrieben. Researche im Net wie etwas funktionieren kann und dann selber zusammen gebastelt.

    Ich suche nur noch eine Lösung was denn ist wenn der Account nicht mehr exestiert oder sonst ein Fehler passiert. beispielsweise eine Prüfung im Feld ob der Account existiert und wenn nicht wird ausgegeben (Unknown Account) oder etwas in der Art.
     

Diese Seite empfehlen

Die Seite wird geladen...