Dies ist meine erste Frage, also versuchte ich klar zu sein (es ist nicht zu lang hoffen!)MySQL (und PHP) einzelne Abfrage, einzelne Tabelle, mehrere Qualifier
Ich bin mit MySQL und PHP, um zu versuchen und Vergleichen Sie Daten in einer PHP-Tabelle, die aus einer MySQL-Tabelle von Verkaufsdaten mit ungefähr folgender Struktur stammen (die Daten stellen mehrere Produkte dar, die an vielen Standorten gekauft und verkauft werden).
price
quantity
type
buyflag
location
‚buyflag‘ ist boolean und repräsentiert, ob die aufgezeichnete Preis ist der Preis, den Punkt an gekauft oder verkauft wird, wo buyflag = true ist der Preis ein Artikel für und buyflag gekauft = false a zeigt Preis, zu dem das Produkt verkauft wurde.
Ich möchte ein Abfrageergebnis, das zwei Standorte nach jedem Produkttyp vergleicht, wenn der Artikel am ersten Standort gekauft und am zweiten Standort verkauft wird. Mit anderen Worten, sieht etwa so aus:
type | quantity | 'buyprice' | 'sellprice'
wo ‚buyprice‘ ist der Preis, den sie an der Position 1 und ‚sellprice‘ ist der Preis, den sie an der Stelle verkauft 2.
Nach einigen Recherchen gekauft wurde Ich war in der Lage, Joins und Unterabfragen zu verwenden, um andere Ergebnisse anzuzeigen, bin aber in diesem Fall davon ausgeschlossen, nach den letzten beiden Spalten in dieser bestimmten Abfrage zu suchen, wenn die Daten alle in einer einzigen Tabelle sind, aber zwei WHERE-Anweisungen erfordern Grabe es aus.
select type, quantity, max(price) as buyprice
from marketfile
where (buyflag=true and location=102)
group by type;
die ersten 3 Spalten erhalten, oder
select type, quantity, min(price) as sellprice
from marketfile
where (buyflag=false and location=75)
group by type;
wird die erste, zweite und vierte Spalte bekommen, aber ich kann nicht herausfinden, wie sie alle in der einer Abfrage zu erhalten.
Mein eher schlecht subquery Aufwand (nicht) so weit war:
select type, quantity, min(price) as buyprice,
(select max(price) from marketfile where (buyflag=false and location=75)) as sellprice
from marketfile
where (buyflag=true and location=102)
group by type;
Der Grund, warum ich es in einer einzigen Abfrage möchte ist dann PHP zu verwenden, um die Abfrage als eine Tabelle angezeigt werden, so kann ich sehen auf der Liste der hunderten von Artikeln, die an Standort 1 gekauft und an Standort 2 verkauft werden, und die Ränder auf dieser bestimmten Route nach Produkt betrachten.
Ich bin versucht, meine MySQL-Unzulänglichkeiten zu umgehen, indem Sie die zwei separaten Abfragen wie oben verwenden und sie in eine neue Tabelle ablegen und dann diese Tabelle erneut abfragen. Diese Problemumgehung scheint nicht besonders elegant zu sein, wenn ich dann mit vielen Standorten arbeiten möchte und daher exponentiell steigende Anzahl von Routen (und damit Tabellen zum Arbeiten).
Vielen Dank im Voraus für jede Hilfe.
Wenn Sie Ihren Abfragen Code-Tags hinzufügen (der kleine Button mit '101 010'), wird Ihre Frage viel lesbarer. – LittleBobbyTables
Danke LittleBobbyTables – lillebusy