2016-03-25 16 views
1

Ein bisschen Probleme mit einem grundlegenden SQL-Problem.Grundlegende SQL-Joining-Tabellen

Die Frage ist, dass ich die Verkäufer Vor- und Nachnamen finden, dann ihre Sozialversicherungsnummer, die Produktbeschreibung, der Produktpreis und verkaufte Menge, wo die Gesamtmenge verkauft wird, ist größer als 5

Ich werde die Datenbankinformationen unten als Foto anhängen.

enter image description here

+0

Haben Sie versucht, alles soweit? – mustaccio

+0

Bisher, was ich habe ist folgendes: Wählen Sie \t \t Vorname, Nachname, SIN \t Von \t \t Salesmen Inner Join Aber jetzt bin ich nicht sicher, wie die drei Tabellen zu verknüpfen, die ich brauche. – Brad

Antwort

2

Produkt verkaufte Menge von mehr als 5

SELECT ProductId 
FROM ProductsSales 
HAVING SUM(QuantitySold) > 5 

Verwendung hilft, die den Rest zu bekommen:

SELECT s.FirstName, s.LastName, s.SIN, p.ProductDescription, ps.UnitSalesPrice, ps.QuantitySold 
FROM ProductsSales ps 
LEFT JOIN Products p on p.ProductID = ps.ProductID 
LEFT JOIN Salesmen s on s.SalesmaneID = ps.SellerID 
WHERE ps.ProductID IN 
    (
     SELECT ProductId 
     FROM ProductsSales 
     GROUP BY ProductId 
     HAVING SUM(QuantitySold) > 5 
    ) 
1
SELECT a.FirstName, a.LastName, a.SIN, c.ProductDescription, b.UnitSalesPrice, b.QuantitySold 
FROM Salesmen a 
LEFT JOIN ProductsSales b 
ON a.SalesmanId = b.SellerId 
LEFT JOIN Products c 
ON b.ProductId = c.ProductId 
WHERE b.QuantitySold > 5 
+0

Okay, vielen Dank! Sind die Buchstaben "a", "b" und "c" einfach die drei verschiedenen Tabellen, die zusammengefügt werden? – Brad

+0

Das ist falsch. Es ist nicht das gesamte Produkt verkauft – Hogan

+0

@Brad ja Alias ​​verwendet werden, um Tabellen zu identifizieren – Fabio

1
Select a.FirstName, a.LastName, a.SIN From Salesmen as a, 
    c.ProductDescriptio, c.Price, b.sum(QunatitySold) 
inner join ProductSales as b on a.Salesmanid = b.sellerid 
inner join Products as c on c.ProductId = b.ProductId 
having b.sum(QunatitySold)> 5 
group by a.FirstName, b.ProductDescription 
+0

Ist nicht die Gesamtzahl verkauft> 5 für alle Verkäufer. Dies ist nach Verkäufer und Produkttyp gruppiert. – Hogan

+0

Wenn die Abfrage wählen Sie den Preis und die Beschreibung dann denke ich, die Aggregationsebene ist auch für Produkt .. (und für die Person) – scaisEdge

1

Brad,

Willkommen in SQL. Der Beitritt zu mir war eine erschreckende Erfahrung, als ich anfing, aber es ist wirklich einfach. Das allgemeine Konzept ist folgendes:

ein

Join Auswahl Wenn Sie alle Datensätze anzeigen möchten, die zwischen den beiden Tabellen gemeinsam sein würde, würden Sie und JOIN verwenden. Wenn Sie die beiden Tabellen kombinieren wollte, aber noch zeigen alle Datensätze verwenden Sie LEFT JOIN

Die grundlegende Syntax ist

SELECT fieldnames FROM tablename alias 
JOIN othertable alias ON firstalias.field = secondalias.field 
--Example 
SELECT animal, food, idtag from animals a 
JOIN food f on a.animalid = f.animalid 

Dies vorausgesetzt, dass Sie ein gemeinsames Feld animalid haben sowohl in der Tiere Tabelle und der Lebensmittel-Tabelle. Sie sollten auch idealerweise die Feldnamen mit dem Aliasnamen voranstellen, um das Verständnis zu erleichtern: a.animal, f.food

Und Sie gehen weiter, bis Sie alle Tabellen, die Sie benötigen, angeschlossen haben. Stellen Sie sicher, Sie fordern nur Feldnamen Sie wollen

Hoffnung, die