Antworten auf deine Fragen:
Neues Thema erstellen

MySql - Join Abfrage

redbull2906

Nicht mehr ganz neu hier

Hallo Leute,

ich habe 2 Tabellen eine mit den userdaten die andere mit Bilder der user.
Ich möchte gerne eine Übersicht alles User mit einem ihrer Bilder haben.

Das Bild soll immer das sein mit der kleinsten id die automatisch beim hochladen vergeben wurde.

Zur Zeit habe ich folgende Abfrage

PHP:
$Sql = 'SELECT u.id, u.name, p.img 
            FROM user u
            LEFT JOIN pic p ON p.u_id = u.id            
            WHERE p.id = (SELECT MIN(p2.id) FROM pic p2 WHERE p2.u_id = u.id)
            ORDER BY f.name ASC';

Soweit ok nur natürlich stehen in der Ausgabe dann die user bei denen auch Bilder vorhanden sind. Ich möchte aber auch die user sehen die noch oder gar kein Bild hinterlegt haben.

Was muss ich im SELECT ändern damit er mir beides auswirft?
 

netbandit

Aktives Mitglied

AW: MySql - Join Abfrage

Ganz dumm, ohne testen zu können, würde ich prüfen ob p.id gleich Null ist

PHP:
$Sql = 'SELECT u.id, u.name, p.img 
            FROM user u
            LEFT JOIN pic p ON p.u_id = u.id            
            WHERE p.id = (SELECT MIN(p2.id) FROM pic p2 WHERE p2.u_id = u.id)
            OR p.id IS NULL
            ORDER BY f.name ASC';

k.A. ob das jetzt =Null oder is Null sein muss
 
Zuletzt bearbeitet:

eytibi

*moep*

AW: MySql - Join Abfrage

Mach mal aus dem LEFT JOIN ein LEFT OUTER JOIN.

Das gibt auch Egebnisse zurück wenn in der 'rechten' Tabelle (Bilder) keine Datensätze vorhanden sind.
 

redbull2906

Nicht mehr ganz neu hier

AW: MySql - Join Abfrage

Genau so ist es richtig (OR p.id IS NULL) - auf die einfachsten Sachen kommt man nicht *arrrrrrr*

danke nun tu es was es soll

ich leg mal ne brainbreak ein ;)

Danke nochmal
 

netbandit

Aktives Mitglied

AW: MySql - Join Abfrage

Pobier aber trotzdem mal den Vorschlag von eytibi aus. Könnte u.U. etwas schneller sein und sieht auch schöner aus ;)
 

saila

Moderatorle

AW: MySql - Join Abfrage

Mach mal aus dem LEFT JOIN ein LEFT OUTER JOIN.

Das gibt auch Egebnisse zurück wenn in der 'rechten' Tabelle (Bilder) keine Datensätze vorhanden sind.

Und was würde die Unterstützung zu einer ODBC-Datenbank nun erwirken?

Ich würde folgenden Ansatz heranziehen:
PHP:
<?php
$Sql = 'SELECT 
            u.id, u.name, 
            p.img 
        FROM 
            user u
            LEFT JOIN pic p ON ( MIN(p.u_id) = u.id)            
        ORDER BY 
            f.name';
?>
Wenn in einer Where-Bedingung ein nochmaliger SELECT erfolgt, ist Quasi der LEFT JOIN für'n Nullinger. Den der Grund des LEFT, RIGHT, INNER-JOIN's ist es ja eine Tabellenreferenzierung zu erhalten. Ergo sollte auch in der Referenzierung die Bedingung für die Tabelle der Bilder vorhanden sein.

Da du eine Liste aller User haben möchtest, wäre die Bedingung lediglich dann erforderlich, um zu prüfen, ob User auch Bilder haben. Wobei selbst dass wiederum in einen LEFT JOIN gehören würde. Bei einem RIGHT JOIN wäre das Ergebnis von User die auch ein Bild hinterlegt haben. Sprich es muss in der Referenzierung ein Ergebnis vorhanden sein. Ansonsten würde der User ohne Bild nicht dargestellt.

Weitere Infos zu JOIN's sind auch unteranderem hier zu finden: MySQL :: Die populrste Open-Source-Datenbank der Welt

Wenn du phpMyAdmin oder den Query-Browser nutzt, kannst du ja mal dein Query-String dort eingeben um zu sehen, wie lange eine Anfrage benötigt. Insbesondere mit der WHERE - Bedingung und dem darin befindlichen SELECT.

Übrigens, ASC wird nicht benötigt, da die Sortierung automatisch von mysql aufsteigend ist. Ausgenommen, du möchtest eine Absteigende Sortierung. Dann wäre lediglich DESC anzuhängen.
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben