• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Widok nie chce się wyświetlić

VPS Starter Arubacloud
0 głosów
120 wizyt
pytanie zadane 31 maja 2018 w SQL, bazy danych przez Kamyyylo Początkujący (460 p.)

Mam taki problem że widok jaki napisałem nie chce się wyświetlić. Oto kod:

CREATE VIEW PRODUKTY AS

    SELECT

    PRODUCT_ID AS "ID PRODUKTU",

    PRODUCT_NAME AS "NAZWA PRODUKTU",

    PRICE_NET "CENA NETTO",

    (SELECT (PRICE_NET*TAX_VALUE+PRICE_NET)

            FROM PRODUCTS

            JOIN TAX USING (TAX_ID)) AS "CENA BRUTTO",

    AVAILABILITY AS "DOSTEPNOSC",

    (SELECT BUILDING_NAME FROM BUILDINGS) AS "NAZWA BUDYNKU",

    (SELECT ADDRESS FROM ADDRESSES) AS "ADRES"

    FROM PRODUCTS S

    JOIN TAX T

    ON  S.TAX_ID=T.TAX_ID

    JOIN BUILDINGS B

    ON S.BUILDING_ID=B.BUILDING_ID

    JOIN ADDRESSES A

    ON B.ADDRESS_ID=A.ADDRESS_ID;

Wyskakuje błąd:

ORA-01427: single-row subquery returns more than one row
01427. 00000 -  "single-row subquery returns more than one row"

Podejrzewam, że winny może być zagnieżdżony SELECT, w którym wykonuje operacje matematyczną ale nie wiem jak to poprawić.

1 odpowiedź

0 głosów
odpowiedź 11 września 2018 przez tylko_jedno_pytanie Użytkownik (580 p.)

Problemem jest to, że dla podzapytań generowanych jest więcej rekordów niż jeden. Np. Dla kolumny Cena brutto ,wyświetlanych jest tyle rekordów ile znajduje się w PRODUCTS JOIN TAX

Nie znając bazy ciężko mi powiedzieć jak dokładnie powinno to wyglądać . Wydaje mi się ,że niepotrzebnie kombinujesz ;) Poniżej przykład jak moim zdaniem mogłoby to wyglądać 


CREATE VIEW PRODUKTY AS
 
    SELECT
 
    S.PRODUCT_ID AS "ID PRODUKTU",
 
    S.PRODUCT_NAME AS "NAZWA PRODUKTU",
 
    S.PRICE_NET "CENA NETTO",
 
    S.PRICE_NET * T.TAX_VALUE + S.PRICE_NET AS "CENA BRUTTO",
 
    S.AVAILABILITY AS "DOSTEPNOSC",
 
    B.BUILDING_NAME AS "NAZWA BUDYNKU",
 
    A.ADDRESS AS "ADRES"
 
    FROM PRODUCTS S
 
    JOIN TAX T
 
    ON  S.TAX_ID=T.TAX_ID
 
    JOIN BUILDINGS B
 
    ON S.BUILDING_ID=B.BUILDING_ID
 
    JOIN ADDRESSES A
 
    ON B.ADDRESS_ID=A.ADDRESS_ID;

Daj znać czy o to Ci chodziło 

Jeśli chcesz ,żebym wyjaśnił, napisz priv :)

 

Podobne pytania

0 głosów
1 odpowiedź 150 wizyt
0 głosów
1 odpowiedź 957 wizyt
0 głosów
1 odpowiedź 205 wizyt
pytanie zadane 7 października 2018 w HTML i CSS przez Moras Obywatel (1,620 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...