Napisanie instrukcji sql

Odpowiedz Nowy wątek
2020-02-06 01:05

Rejestracja: 1 rok temu

Ostatnio: 2 godziny temu

0

Na dzis ostatnia tabela,prosiłym o zerkniecie czy jest małowiele ok..
tabele:
plyty(idplyty,tytul,cenajedn,rokwydania,ilosc)
sprzedaz(numerklienta,idplyty,iloscsprzedanych,datasp)
Klucz głowny(atrybuty podkreslone) klucz obcy: idplyty

Zapytanie w sql ktore dla kazdego klienta podaje numerklienta, ilosc plyt wydanych w roku 2010 jakie zakupil

SELECT a.numerklienta, SUM(a.iloscsprzedanych)
FROM sprzedaz a JOIN plyty b ON a.idplyty=b.idplyty
WHERE b.rokwydania='2010'

Instrukcja w sql ktora dla kazdej plyty ktora nie zostala jeszcze sprzedana podaje idplyty, rok wydania,cenajedn

SELECT a.idplyty, a.rokwydania, a.cenajedn
FROM plyty a LEFT JOIN sprzedaz b ON a.idplyty = b.idplyty
WHERE b.idplyty IS NULL AND a.idplyty IS NOT NULL;

instrukcja ktora dla kazdej plyty oblicza liczbe sprzedanych egzemplarzy i podaje minimalna wartosc sposrod tych liczb

SELECT * FROM(
SELECT sp.idplyty, SUM(sp.iloscsprzedanych)
FROM sprzedaz sp WHERE sp.idplyty=sp.idplyty GROUP BY sp.idplyty ORDER BY SUM(sp.iloscsprzedanych) )
WHERE ROWNUM=1;

Pozostało 580 znaków

2020-02-06 07:53

Rejestracja: 17 lat temu

Ostatnio: 4 godziny temu

1

1 ok

  1. AND a.idplyty IS NOT NULL jest niepotrzebne
  2. źle, nie zwróci Ci płyt bez sprzedaży

Pozostało 580 znaków

2020-02-06 09:02

Rejestracja: 1 rok temu

Ostatnio: 2 godziny temu

0

Hmm wiesz moze jak to poprawic ?

Pozostało 580 znaków

2020-02-06 09:21

Rejestracja: 17 lat temu

Ostatnio: 4 godziny temu

0
SELECT * FROM (
SELECT a.idplyty, SUM(coalesce(b.iloscsprzedanych,0)) il
FROM plyta  a LEFTJOIN sprzedaz b ON a.idplyty=b.idplyty order by il)
WHERE ROWNUM=1;

Pozostało 580 znaków

2020-02-08 01:30

Rejestracja: 1 rok temu

Ostatnio: 2 godziny temu

0

Czy moglbym to tez tak napisac?
Instrukcja w sql ktora dla kazdej plyty ktora nie zostala jeszcze sprzedana podaje idplyty, rok wydania,cenajedn


Select idplyty,rokwydania,cenajedn from plyty
where numerklienta not in (Select numer klienta from sprzedaz);

Pozostało 580 znaków

2020-02-09 01:16

Rejestracja: 1 miesiąc temu

Ostatnio: 3 tygodnie temu

1
dcielak napisał(a):

Czy moglbym to tez tak napisac?
Instrukcja w sql ktora dla kazdej plyty ktora nie zostala jeszcze sprzedana podaje idplyty, rok wydania,cenajedn


Select idplyty,rokwydania,cenajedn from plyty
where numerklienta not in (Select numer klienta from sprzedaz);

Blisko, ale użyłeś złej kolumny. Jeśli struktura bazy Ci się nie zmieniła, to w tabeli plyty nie masz takiej kolumny jak numerklienta. Możesz to rozwiązać na 2 sposoby:

-- sposob 1
SELECT idplyty, rok wydania, cenajedn
  FROM plyty p
 WHERE p.idplyty NOT IN (SELECT s.idplyty FROM sprzedaz s)
--sposob 2
SELECT idplyty, rok wydania, cenajedn
  FROM plyty p
  LEFT JOIN sprzedaz s 
    ON s.idplyty = s.idplyty
 WHERE s.idplyty IS NULL    

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0