• 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
129 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ź 159 wizyt
0 głosów
1 odpowiedź 1,026 wizyt
0 głosów
1 odpowiedź 228 wizyt
pytanie zadane 7 października 2018 w HTML i CSS przez Moras Obywatel (1,620 p.)

92,775 zapytań

141,703 odpowiedzi

320,567 komentarzy

62,109 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

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!

...