2016-05-13 6 views
-1

Ich habe Hausaufgaben und bin an einem Punkt festgefahren. Ich habe 7 Tabelle für meine Datenbank.Diese sind products-books-movies-musics-transactions-users und für viele zu viele Beziehung gibt es Tabelle transproduct. Also möchte ich den meistverkauften Artikel in der Datenbank mit Produktnamen und Typ und Anzahl der Verkäufe dieses Produkts finden. Kurzum transproduct die TransactionID, productid und Menge hält, hält Produkt den Namen, den Typ und usw. ich eine Abfrage wie folgt geschrieben:Den Namen eines meistverkauften Artikels in meiner Bibliothek finden (mysql)

select Barcode,sum(quantity) 
    from transproduct 
    group by Barcode; 

und es gibt mir den Barcode eines Produktes und die Anzahl der Verkäufe von dieser Gegenstand; beispielsweise;

12345 15 

13452 2 
etc... 

so habe ich versucht, beide Tabellen zu verwenden und schrieb someting wie die

select Barcode,max(summ) from(
select Barcode,sum(quantity) as summ 
    from transproduct 
    group by Barcode) as t1; 

aber es gibt mir nicht das Produkt-ID der meisten verkauften Artikel gibt es die Mindest Produkt-ID und Nummer von Verkäufen von maximal verkauftem Produkt. Ich möchte ähnliche ich

productName|productType|Quantity 

Back To Black|Music|53 

einen Tisch bekommen bin so verwirrt, so dass ich weiß, dass ich mich nicht klar erklären konnte aber dank wenn u helfen kann ...

Die Tabellen Ich verwende:

create table transproduct(
transactionID char(9), 
Barcode char(5), 
quantity integer(5), 
constraint pktransproduct primary key (transactionID, Barcode)); 

alter table transproduct add constraint fktransproducttransaction 
foreign key (transactionID) references transactions(transactionID); 

alter table transproduct add constraint fktransproductproduct 
foreign key (Barcode) references product(Barcode); 

und

create table product(
Barcode char(5), 
productName nvarchar(50), 
quantity integer(6), 
price double, 
ProductType varchar(11), 
constraint pkproduct primary key (Barcode)); 

dies sind einige Beispieldaten aus Produkt

'12345', 'A Head Full Of Dreams', '2', '7.5', 'Music' 
'46089', 'Ride The Lightning ', '31', '19.99', 'Music' 
'46792', 'Back to Black', '21', '13.5', 'Music' 

dies sind einige Beispieldaten aus transproduct

'164571349', '13762', '3' 
'496272753', '14532', '13' 
'365725914', '14532', '2' 

klar zu sein, wie Sie das Produkt sehen ‚14532‘ verkauft 15-mal und die am meisten verkauften Artikel so erhalte ich möchte Tisch wie

'Of Mice And Men','Book','15' 

jetzt im diese Abfrage verwenden und es funktioniert, aber ich glaube nicht, seine effiziente

select productName,ProductType,r from(
select Barcode as b ,max(summ) as r from(
select Barcode,sum(quantity) as summ 
    from transproduct 
    group by Barcode order by sum(quantity) desc)as t1)as t2,product where b=product.Barcode; 
+0

Schauen Sie sich an, was die ORDER BY (und LIMIT) Klauseln für Sie tun können. – Strawberry

+0

Zeigen Sie einige Beispieldaten mit Ihrem Ergebnis und dem erwarteten Ergebnis – Jens

+0

Ich habe einige Reihenfolge verwendet und viele verschachtelte Auswahl Ich weiß, meine Abfrage ist überhaupt nicht effizient, aber es wird für jetzt tun, denke ich. Sorry für die Störung und danke für die Bestellung durch Beratung ^^ Wenn ich alle anderen Aufgaben beenden kann, werde ich zurückkommen und diese Frage mit spezifischeren Daten stellen ^^ –

Antwort

0

Warum versuchen Sie nicht, es nach Produktname zu gruppieren, wenn Sie das in Ihrer TransProduct-Tabelle haben.

wäre besser Wenn Sie Schema der Tabelle und einige Beispieldaten bereitstellen können.

+0

Ich habe keinen Produktnamen in transprodukt Ich werde meine Frage mit den Tabellen und einige bearbeiten Beispieldaten in einer Minute –

Verwandte Themen