2017-08-10 2 views
0

Ich arbeite an der Erstellung einer Preisvergleichstabelle mit mehreren Lieferanten.MySQL Preise vergleichen

Die Tabelle hat die folgenden Spalten - nennen wir es tabelle1:

|name |partnumber |supplier |cost 
CD  11A   West  10.11 
CD  11A   East  10.00 
USB  BBB   North  125.01 
USB  BBB   West  101.10 

Was möchte ich für tabelle1 zu erreichen, ist folgendes zu zeigen:

|name |partnumber |supplier |cost 
CD  11A   East  10.00 
USB  BBB   West  101.10 

Ergebnis/Differenz Wesen: Der Die Tabelle würde nur die Spalten anzeigen, die mit dem Lieferanten in Beziehung stehen, der das Produkt zu seinem günstigsten Preis hat.

Gibt es jemanden, der mir etwas dagegen hätte? Es hat meinen Kopf gemacht.

Alternativ; Ich habe auch eine andere Tabelle mit einer Preisspalte für jeden Lieferanten erstellt, aber das standardisiert nicht die Datenbank und es würde nicht für eine gut geschriebene Abfrage oder Leistung sorgen.

Vielen Dank!

+0

Bitte erläutern Sie finden, welche Spalten ein Produkt identifizieren können. –

Antwort

0

diese Abfrage, was Sie

SELECT a.name , a.partnumber , a.supplier , a.cost FROM table1 a JOIN (
    SELECT name , partnumber , MIN(cost) cost 
    FROM table1 
    GROUP BY name , partnumber 
) b ON a.name = b.name AND a.cost = b.cost AND a.partnumber = b.partnumber 

Sie das Ergebnis von (Name und Teilenummer) zu einer Gruppe benötigen benötigen und die minimalen Kosten für jede Gruppe

+0

Ich würde nach partnumber gruppieren, das ist wahrscheinlich zuverlässiger. –

+0

habe es gerade getan, überprüfen Sie die Bearbeitung – Ali

+0

@Noob Entschuldigung, ich habe dich nicht bekommen. Wie könnte ich 'HAVING' verwenden? – Ali