2017-03-20 5 views
0

Ich muss eine Bedingung hinzufügen, die nur die Zeilen auswählt, in denen ein Feld (my_galleries.format) einem Zeichenfolgenwert von 'Bilder' entspricht. Ich versuche, es zu dieser funktionierenden SQL-Anweisung hinzuzufügen.SQL Beitreten und weiter filtern

SELECT 
    gallery_url, 
    preview_url 
FROM 
    my_galleries, 
    my_gallery_previews 
WHERE 
    my_galleries.gallery_id = my_gallery_previews.gallery_id 

ich das versucht, ohne Erfolg ....

SELECT 
    gallery_url, 
    preview_url 
FROM 
    my_galleries, 
    my_gallery_previews 
WHERE 
    my_galleries.gallery_id = my_gallery_previews.gallery_id 
    AND my_galleries.format='pictures' 

Irgendwelche Ideen?

+0

Was ist das Ergebnis, das Sie erhalten? Eine Randnotiz: Verwenden Sie die neuere Version von [Joining Tables] (https://www.w3schools.com/sql/sql_join.asp), nicht die, die Sie verwendet haben. – ahoxha

+0

Schau richtig zu mir. Vielleicht versuchen Sie: Wählen Sie my_galleries.format aus my_galleries, wo my_galleries.format = 'Bilder', um zu sehen, ob Sie in dieser Tabelle übereinstimmen. Wenn Sie das tun, vermute ich, dass Ihr Join diese Zeilen ausschließt. – Degan

Antwort

0

Ich empfehle, nicht die FROM foo, bar WHERE foo.key = bar.key Ansatz zur Durchführung einer JOIN zu verwenden, da es nicht sehr flexibel ist und nicht für neue Leser Ihres Codes offensichtlich ist. Stattdessen sollten Sie eine explizite JOIN stattdessen durchführen:

SELECT 
    gallery_url, 
    preview_url 
FROM 
    my_gallery_previews 
    INNER JOIN my_galleries ON my_gallery_previews.gallery_id = my_galleries.gallery_id 
WHERE 
    my_galleries.format = 'pictures' 
0

Wie über Sie versuchen, diese

SELECT gallery_url, preview_url FROM my_galleries 
JOIN my_gallery_previews ON 
my_galleries.gallery_id = my_gallery_previews.gallery_id 
WHERE my_galleries.format='pictures' 

Mit der Verbindung, stellen Sie sicher, dass Ihre ausgewählten Spalten mit ihren jeweiligen Tabellen Präfix. Ich hoffe, das hilft

0

Wie andere angegeben haben, empfehle ich Ihnen, die neue Struktur der Verbindung zu verwenden, da es lesbarer ist.

SELECT mg.gallery_url, 
     mgp.preview_url 
    FROM my_galleries  mg 
    JOIN my_gallery_previews mgp ON mg.gallery_id = mgp.gallery_id 
           AND mg.format = 'pictures' 

Sie können die Filterbedingung mithilfe einer AND-Anweisung in den Join einfügen. (Nur ein anderer Weg, es zu tun)

Ihre Abfrage scheint korrekte Syntax zu sein. Ich würde empfehlen, Ihren Datensatz durchzugehen oder ihn in Ihre Frage zu bearbeiten. Es ist möglich, dass derzeit keine Bildergalerie-Vorschaubilder eine Galerie-ID mit einer vorhandenen Galeriezeile teilen, die den Join daran hindert, zu funktionieren.