Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Microsoft SQL Server / MSDE _ Łączenie 2 tabel i podliczenie

Napisany przez: honciv 28.12.2017, 11:21:03

Witam serdecznie,

jestem początkujący i zmagam się z takim oto zadaniem:

z tabel, ze strony:
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all

muszę wydobyć i pokazać ilu i jakich klientów obsługiwała Nancy?

z góry dziękuje za pomoc smile.gif

Napisany przez: Tomplus 28.12.2017, 23:12:52

Kod
SELECT c.CustomerName, o.*, e.FirstName Employee FROM [Orders] o INNER JOIN [Customers] c ON c.CustomerID = o.CustomerID LEFT JOIN [Employees] e ON e.EmployeeID = 1

Napisany przez: mmmmmmm 29.12.2017, 08:15:05

  1. SELECT c.CustomerName, o.*, e.FirstName Employee FROM [Orders] o INNER JOIN [Customers] c ON c.CustomerID = o.CustomerID INNER JOIN [Employees] e ON e.EmployeeID = o.EmployeeID WHERE e.EmployeeID=1

Napisany przez: honciv 29.12.2017, 09:41:51

Cytat(Tomplus @ 28.12.2017, 23:12:52 ) *
Kod
SELECT c.CustomerName, o.*, e.FirstName Employee FROM [Orders] o INNER JOIN [Customers] c ON c.CustomerID = o.CustomerID LEFT JOIN [Employees] e ON e.EmployeeID = 1


ale w tej regule pojawiają mi się wszystkie EmployeeID, a nie tylko 1 sad.gif

Cytat(mmmmmmm @ 29.12.2017, 08:15:05 ) *
  1. SELECT c.CustomerName, o.*, e.FirstName Employee FROM [Orders] o INNER JOIN [Customers] c ON c.CustomerID = o.CustomerID INNER JOIN [Employees] e ON e.EmployeeID = o.EmployeeID WHERE e.EmployeeID=1


dziękuję bardzo, a czy dało by radę to podliczyć - dowiedziałem się że wynikiem mojego zapytania ma być ilość klientów obsłużonych przez Nancy

Napisany przez: Neutral 29.12.2017, 23:09:03

  1. SELECT count(*) FROM posts WHERE posts.user_id = 'Nancy' GROUP BY posts.user_id;


Coś takiego chyba powinieneś napisać.

Napisany przez: mmmmmmm 29.12.2017, 23:12:58

  1. SELECT Count(DISTINCT c.CustomerID) AS ilosc FROM [Orders] o INNER JOIN [Customers] c ON c.CustomerID = o.CustomerID INNER JOIN [Employees] e ON e.EmployeeID = o.EmployeeID WHERE e.EmployeeID=1

Napisany przez: honciv 4.01.2018, 11:26:53

Cytat(Neutral @ 29.12.2017, 23:09:03 ) *
  1. SELECT count(*) FROM posts WHERE posts.user_id = 'Nancy' GROUP BY posts.user_id;


Coś takiego chyba powinieneś napisać.


wynik jest ok - czyli 23, a czy mogę prosić o kod z takim wynikiem, ale żeby w kodzie i wyniku oprócz liczby 23 widoczna była Nancy?

z góry dziękuję smile.gif

Napisany przez: nospor 4.01.2018, 11:31:18

NIe przesadzasz z lekka? Ciezko dopisac przy SELECT kolejna kolumne, ktrora chcesz wyswietlic?

SELECT count(*), posts.user_id FROM posts WHERE posts.user_id = 'Nancy' GROUP BY posts.user_id;

Napisany przez: honciv 4.01.2018, 11:44:30

Cytat(nospor @ 4.01.2018, 11:31:18 ) *
NIe przesadzasz z lekka? Ciezko dopisac przy SELECT kolejna kolumne, ktrora chcesz wyswietlic?

SELECT count(*), posts.user_id FROM posts WHERE posts.user_id = 'Nancy' GROUP BY posts.user_id;


Przepraszam, dopiero się uczę, analizuję każdą pomoc od forumowiczów - mam nadzieję że będę mógł też kiedyś pomagać.

Niestety ale podany przez Ciebie kod nie działa sad.gif

Napisany przez: nospor 4.01.2018, 11:56:52

A "nie dziala" objawia sie czym?

Napisany przez: honciv 4.01.2018, 12:27:53

po wpisaniu kodu od Ciebie nie wyskakuje m żaden wynik sad.gif

Sorry za mój brak wiedzy sad.gif

Napisany przez: Toshikatsu 4.01.2018, 12:39:36

To nie kwestia braku wiedzy, a braku chęci wyjaśnienia problemu.
"Nie działa" "Nie wyskakuje" to mało dokładne informacje.

Najlepiej by było jakbyś pokazał co robisz, bo to co dodał nospor do zapytania nie miało prawo go "zepsuć".

Napisany przez: mmmmmmm 4.01.2018, 12:53:29

Przecież on W OGÓLE nie ma takiej tabeli jak posts smile.gif

Napisany przez: nospor 4.01.2018, 13:40:06

@mmmmmmm czyli sugerujesz ze kolega zamienil to zapytanie
SELECT count(*) FROM posts WHERE posts.user_id = 'Nancy' GROUP BY posts.user_id;
na zapytanie z poprawna tabela zamiast posts ale mojej wersji juz nie zamienil spowrotem na poprawna tabele? Myslisz ze zrobilby cos tak niegodziwego? wink.gif

Napisany przez: honciv 4.01.2018, 14:06:59

nie rozumiem sad.gif
nic nie zmieniałem

Napisany przez: nospor 4.01.2018, 14:12:13

Tego tez nie rozumiesz

Cytat
"Nie działa" "Nie wyskakuje" to mało dokładne informacje.

Najlepiej by było jakbyś pokazał co robisz

?

Napisany przez: Toshikatsu 4.01.2018, 14:28:32

Nie chciałbym tutaj wszystkiego robić za kolegę, ale najwyraźniej przekopiował inny select, a inny zacytował w poście.

Generalnie to czego potrzebujesz, honciv to powinno być to:

  1. SELECT count(*), e.FirstName FROM Orders o JOIN Employees e ON o.EmployeeID = e.EmployeeID WHERE e.FirstName = "Nancy"


Aczkolwiek problem przy takich rzeczach wymagałby nieco więcej pracy własnej i chęci rozwiązania takiej sytuacji. Dobrym ćwiczeniem byłoby na pewno prześledzenie i spróbowanie wytłumaczyć samemu sobie(bądź nam w poście - a co!), co to zapytanie robi smile.gif

Napisany przez: honciv 5.01.2018, 09:09:13

Cytat(Toshikatsu @ 4.01.2018, 14:28:32 ) *
Nie chciałbym tutaj wszystkiego robić za kolegę, ale najwyraźniej przekopiował inny select, a inny zacytował w poście.

Generalnie to czego potrzebujesz, honciv to powinno być to:
  1. SELECT count(*), e.FirstName FROM Orders o JOIN Employees e ON o.EmployeeID = e.EmployeeID WHERE e.FirstName = "Nancy"


Aczkolwiek problem przy takich rzeczach wymagałby nieco więcej pracy własnej i chęci rozwiązania takiej sytuacji. Dobrym ćwiczeniem byłoby na pewno prześledzenie i spróbowanie wytłumaczyć samemu sobie(bądź nam w poście - a co!), co to zapytanie robi smile.gif


Witam,
bardzo dziękuję, o to mi chodziło, w weekend siadam przy wszystkich przykładach od Was i będę rozgryzał każdy krok po kroku, bardzo dziękuję za pomoc smile.gif
Miłego dnia

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)