2016-05-12 14 views
0

Ich versuche, eine Liste meiner Produkte zu erstellen. Ich habe eine Verbindung zwischen zwei Tabellen, Produkten und products_photos.sql beitreten klar php

Ich habe X-Produkte, die ein Register auf den Produkten Fotos haben. Das Problem tritt auf, wenn ich zwei Register in der Produktfotos-Tabelle habe, die das gleiche id_product haben. Dann zeigen die Ergebnisse 2 mal das gleiche Produkt mit dem anderen Foto. Ich möchte nur die erste, nicht zweimal das gleiche Produkt zeigen.

SELECT DISTINCT p.*, photo.url_little 
FROM ".Constants::$PRODUCTS_TABLE." as p 
    LEFT JOIN ".Constants::$PHOTOS_PRODUCTS_TABLE." as photo ON p.id=photo.id_product 
WHERE p.id_client = ? 

Wahrscheinlich distinct eine schlechte Verwendung des Befehls tue mir, aber ich weiß nicht, wie dieses Problem zu beheben.

+0

auf den gesamten ausgewählten Zeilen DISTINCT Werke SELECT (keine doppelten Zeilen zurückgegeben werden.) – jarlh

Antwort

0

Wenn Sie nur ein zeigen möchten, verwenden Sie eine korrelierte Unterabfrage:

select p.*, 
     (select ph.url_little 
     from ".Constants::$PHOTOS_PRODUCTS_TABLE." ph 
     where p.id = ph.id_product 
     order by ph.id asc 
     limit 1 
     ) as url_little 
from ".Constants::$PRODUCTS_TABLE." as p 
where p.id_client = ?; 
+0

Thank you! Das war perfekt! –

0

wenn Sie DISCINCT p.* verwenden dann alles, was Sie erhalten die Zeilen, weil Sie auch die Zeile di wählen (und dies ist unque)

versuchen, die gleiche Abfrage, sondern nur mit der Spalte müssen Sie

SELECT DISTINCT p.column_i_need1, photo.url_little 
    FROM ".Constants::$PRODUCTS_TABLE." as p 
    LEFT JOIN ".Constants::$PHOTOS_PRODUCTS_TABLE." as photo 
     ON p.id = photo.id_product WHERE p.id_client = ?