[SQLite] Problem z zapytaniem

0

Witam!
Robię projekt dla którego muszę stworzyć prostą bazę danych w SQLite. W trakcie tworzenia bazy napotkałem na pewien problem.
Mam dane dwie tabele:

  1. pierwsza tabela Maszyna:
    Maszyna
    ID Kod
    1  M1
    2  M2
  2. druga tabela Stan:
    Stan
    ID Maszyna Stan Data
    1  1       A    2009-12-05
    2  1       B    2009-12-06
    3  2       C    2009-12-03
    4  2       B    2009-12-02
    ...

    Chodzi mi o to aby stworzyć widok który zawierałby aktualny stan dla każdej maszyny. Wynik mógłby wyglądać mniej więcej tak:

    Maszyna Stan
    M1      B
    M2      C

    Próbowałem zagnieżdżać polecenie SELECT ale nie udało mi się osiągnąć oczekiwanego wyniku. Może ktoś z Was będzie mi w stanie pomóc?
    Pozdrawiam. Marcin.

0

nie wiem czy o to chodzi

SELECT Maszyna.kod,Stan.Stan
FROM Maszyna INNER JOIN stan ON Maszyna.ID=Stan.Maszyna;
0

Nie bardzo :(. Twoje zapytanie zwraca wynik:

Kod Stan
M1  A
M1  B
M2  C
M2  B

A mi chodzi o to aby każda maszyna była wymieniona tylko raz.

0

aha to może pomoże to

SELECT Maszyna.Kod,Stan.Stan
FROM Maszyna INNER JOIN stan ON Maszyna.ID=Stan.Maszyna
GROUP BY Maszyna.Kod;

bo też dziwnie ,że w twojej bazie jedna maszyna ma 2 stany i nie wiadomo który wybrać czy co :P

0

Ja nic nie chcę mówić, ale chyba kluczowe słowo to AKTUALNY:

SELECT Maszyna.Kod,Stan.Stan
FROM Maszyna where Maszyna.data = date() INNER JOIN stan ON Maszyna.ID=Stan.Maszyna

Czy jakoś tak. Zależy jak trzymasz datę w bazie .

0

w sumie słusznie :)

0

Dziękuje wszystkim za pomoc. Szczególnie koledze Koziołkowi za to że podsunął mi pomysł na rozwiązanie :):

SELECT Maszyna.Kod, Stan.Stan 
FROM Maszyna, Stan WHERE Stan.Data = (SELECT max(Data) FROM Stan WHERE Maszyna = Maszyna.ID);

Pozdrawiam. Marcin

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