Acces- problem z kwerendą

0

Cześć!
Mam do zrobienia projekt, o tematyce modeli BMW. Wszystko fajnie, praca ciekawa, tylko zaciąłem się. Otóż chciałbym zrobić kwerendę, która pozwoli po wpisaniu roku produkcji pojazdu, pokazać wszystkie możliwe modele. Niestety, albo wyskakują mi jakies dziwne błędy, albo nie mam pojęcia jak to zrobić dodając wszystkie tabele. Czy może doradzić ktoś bardziej obeznany w bazach danych?

Pozdrawiam serdecznie!

Plik mojej bazy w załączniku.

1

Totalnie skopana struktura.
Powinieneś mieć jedną tabelę o strukturze:
Identyfikator
Seria
Model
Początek produkcji (rok)
Koniec produkcji (rok)
Moc maksymalna (w KM) - bez przelicznika na Nm, ew. druga kolumna na Nm

Druga tabela to dostępne pojemności (słownikowa)
i Trzecia tabela :
id_samochodu
Id_pojemności
(wiele do wielu)

Jak to zrobisz, to wszystko będzie proste...

0

Czyli z tą strukturą nie zrobię żadnej kwerendy?

0

Będzie bardzo ciężko... Załóżmy, że masz "laat produkcji" podane 2004-2011, a szukasz samochodów produkowanych w 2007 roku. Więc ten też powinien być... Rzeźba i rzeźnia...

2

Założenia błędne, jeżeli kazda seria powoduje dodanie nowej tabeli to jest cos skopane, pomyśl co zrobisz jak przyjdzie polecenie by w tą bazę upchać jeszcze np. Fiata?

Powinieneś iść w stronę bardziej ogólną:
Tabela producent, w której umieszczasz nazwę producent
Tabela samochody, w której umieszczasz poszczególne modele samochodów
Tabela silnik w której umieszczasz silniki
Tabela silnikmodele w której łączysz auta z silnikami

Chodzi o to by można w łatwy sposób opisać dane, a ich przybywanie nie powodowało zmiany struktury danych, w załączniku masz bazę z koncepcją jak to można zmienić (nie jest to idealne, ale pokazuje kierunek w którym powinieneś dążyć) , a w niej takie tabele:

screenshot-20190116132403.png

sprawdź jak wygląda teraz raport.

Zapytanie o rok produkcji nie jest jakoś szczególnie ciężkie, i na obecnych danych można to też wykonać. Zrób kwerendę samochody:

SELECT 
    1 as Producent
    ,"Seria 1" as Seria
    , Model
    , cint(left([Lata produkcji],4)) as produkcjaod
    , cint(iif(Mid([Lata produkcji],6,1)="?",null,Mid([Lata produkcji],6))) as produkcjado
     ,[Dostępne pojemności silnika]
    , [Najwyższa moc w danym modelu]
FROM [BMW Seria 1]
union all
SELECT 
    1 as Producent
    ,"Seria 2" as Seria
    , Model
    , cint(left([Lata produkcji],4)) as produkcjaod
    , cint(iif(Mid([Lata produkcji],6,1)="?",null,Mid([Lata produkcji],6))) as produkcjado
     ,[Dostępne pojemności silnika]
    , [Najwyższa moc w danym modelu]
FROM [BMW Seria 2]
union all
SELECT 
    1 as Producent
    ,"Seria 3" as Seria
    , Model
    , cint(left([Lata produkcji],4)) as produkcjaod
    , cint(iif(Mid([Lata produkcji],6,1)="?",null,Mid([Lata produkcji],6))) as produkcjado
     ,[Dostępne pojemności silnika]
    , [Najwyższa moc w danym modelu]
FROM [BMW Seria 3]
union all
SELECT 
    1 as Producent
    ,"Seria 4" as Seria
    , Model
    , cint(left([Lata produkcji],4)) as produkcjaod
    , cint(iif(Mid([Lata produkcji],6,1)="?",null,Mid([Lata produkcji],6))) as produkcjado
     ,[Dostępne pojemności silnika]
    , [Najwyższa moc w danym modelu]
FROM [BMW Seria 4]
union all
SELECT 
    1 as Producent
    ,"Seria 4" as Seria
    , Model
    , cint(left([Lata produkcji],4)) as produkcjaod
    , cint(iif(Mid([Lata produkcji],6,1)="?",null,Mid([Lata produkcji],6))) as produkcjado
     ,[Dostępne pojemności silnika]
    , [Najwyższa moc w danym modelu]
FROM [BMW Seria 4]
union all
SELECT 
    1 as Producent
    ,"Seria 5" as Seria
    , Model
    , cint(left([Lata produkcji],4)) as produkcjaod
    , cint(iif(Mid([Lata produkcji],6,1)="?",null,Mid([Lata produkcji],6))) as produkcjado
     ,[Dostępne pojemności silnika]
    , [Najwyższa moc w danym modelu]
FROM [BMW Seria 5]
union all
SELECT 
    1 as Producent
    ,"Seria 6" as Seria
    , Model
    , cint(left([Lata produkcji],4)) as produkcjaod
    , cint(iif(Mid([Lata produkcji],6,1)="?",null,Mid([Lata produkcji],6))) as produkcjado
     ,[Dostępne pojemności silnika]
    , [Najwyższa moc w danym modelu]
FROM [BMW Seria 6]
union all
SELECT 
    1 as Producent
    ,"Seria 7" as Seria
    , Model
    , cint(left([Lata produkcji],4)) as produkcjaod
    , cint(iif(Mid([Lata produkcji],6,1)="?",null,Mid([Lata produkcji],6))) as produkcjado
     ,[Dostępne pojemności silnika]
    , [Najwyższa moc w danym modelu]
FROM [BMW Seria 7]
union all
SELECT 
    1 as Producent
    ,"Seria 8" as Seria
    , Model
    , cint(left([Lata produkcji],4)) as produkcjaod
    , cint(iif(Mid([Lata produkcji],6,1)="?",null,Mid([Lata produkcji],6))) as produkcjado
     ,[Dostępne pojemności silnika]
    , [Najwyższa moc w danym modelu]
FROM [BMW Seria 8]

a później druga:

select * from samochody where where  [podaj rok produkcji] between produkcjaod  and nz(produkcjado, [podaj rok produkcji]+100)

tylko w tabeli BMW Seria 8 musisz uzupełnić rok produkcji modelu G15 na 2018-???

0

Wszystko śmiga, temat można zamknąć! Wielkie dzięki za pomoc :)

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