Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie sql
Forum PHP.pl > Forum > Bazy danych
dziubekpr
Mam taki problem:
w tabeli Przyloty która składa się z jedej kolumny DATA przechowywane są daty przylotów samolotu. zakł. że jeden przylot kończy się w tym samym dniu gdy zaczyna się następny oraz że DATA jest kluczem gł tabeli
napisz zapytanie SQL, które zwraca daty rozpoczęcia i zakończenia przylotów oraz okres trwania lotu

Bardzo proszę o pomoc lub chociaż wskazówki:)
SongoQ
To wskazowki

  1. SELECT odlot, przylot, (odlot - przylot) AS czas_lotu FROM ...........


OT odlot tongue.gif
dziubekpr
Ok:)dzięki, ale największy problem to jest właśnie z wyróżnieniem i uszeregowaniem dat przylotu i odlotu bo one są w jedynej kolumnie tej tabeli np.
2007-07-11 data przylotu
2007-07-18 data odlotu i od razu jest datą kolejnego przylotu
2007-07-22 -exclamation.gif-
i co?
Prosze pomóżcie:)
SongoQ
A jak odrozniasz ktore to bo jesli to jest jakas flaga to zrob zlaczenie 2x tych samych tabel.
dziubekpr
Flaga???Sorki ale jestem początkująca:) a złączenie 2x tej samej tabeli to niby jak?inner join...?
dzięki że mi pomagasz:)
SongoQ
Ok to moze inaczej, wrzuc strukture bo jakos nie zrozumialem jak wyglada Twoja tabela. Zrobilbym to najprosciej

id | start | stop

i teraz to zapytani co na poczatku podawalem
dziubekpr
No właśnie nie mam konkretnej podanej tabeli w zadaniu:( tylko wiadomo że ta tabela ma jedną kolumnę o nazwie DATA(i jest jej kluczem głównym) kolumna przechowuje daty przylotów, przy założeniu że jeden przylot kończy się w dniu w którym zaczyna się drugi (odlot)
i tak sobie dla przykładu powpisywałam kolejne daty:) jak wyżej
ta jak to teraz proponujesz zrobi?
dzięki

Proszę napisz cośsad.gif

jest ktoś kto mógłby mi pomóc?questionmark.gif?
heaven
  1. SELECT t.DATA AS odlot, (SELECT MIN(t2.DATA) FROM test2 t2 WHERE t2.DATA > t.DATA) AS przylot, TIMEDIFF((SELECT MIN(t2.DATA) FROM test2 t2 WHERE t2.DATA > t.DATA) , t.DATA) AS czas_trwania_lotu FROM test2 t ORDER BY t.DATA


tu tabela nazywa sie test2 a ty sobie to pozmieniaj na swoja

a i jeszcze jedno bo teraz czas lotu pokaze ci w godzinach:minutach:sekundach
ale widze ze loty te nie wylatuja o konkretnej godzinie tylko w danym dniu wiec zamiast TIMEDIFF uzyj DATEDIFF poda ci ile dni lecial a nie ile godzin
pozdr.

sorki. dopiero teraz przecytalem o co to chodzi smile.gif i nie wzialem pod uwage ze w tabeli sa przyloty a nie odloty. wiec powinno byc tak.
  1. SELECT p.DATA AS przylot, (SELECT MAX(p2.DATA) FROM Przyloty p2 WHERE p2.DATA < p.DATA) AS odlot, TIMEDIFF(p.DATA,(SELECT MAX(p2.DATA) FROM Przyloty p2 WHERE p2.DATA < p.DATA)) AS czas_trwania_lotu FROM Przyloty p ORDER BY p.DATA
dziubekpr
Dzięki Ci:))))))))
Ale mam jeszcze jedno zadanko....:)może akurat będziesz miał chwilkę:)
w tabeli dokumenty, która składa się z klucza głównego ID typu integer oraz pól:Nuimer_dok typu int oraz data_dok typu data. dokumenty zostały wpisane w losowej kolejności i system nadał im numery których kolejności nie są zgodne z datami dokumentów
1. za pomocą SQL'a przenumeruj dokumenty zgodnie z polem Data_dok
2. za pomocą SQL'a przenumeruj dokumenty zgodnie z polem Data_dok zachowując istniejące dziury w numeracji (np. jeżeli mamy (tylko) dwa dokumenty nr 1 z 10 kwietnia oraz nr 3 z 9 kwietnia to w wyniku mamy otrzymać numer 3 z 10 kwietnia oraz nr 1 z 9 kwietnia)

jak dla mnie zbyt skomplikowane:)dziękuję z góry za Waszą pomoc
acha-zapytania mają być jak najprostsze, typu select, update

Pozdrówka

Może ma ktoś pomysł jak rozwiązać powyższe zadanie:)))bardzo mi na nim zależy:(
proszę:)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.