![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 6.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Mam tabele o takich polach:
|Dodot| NrPrac| we_wy| 2007-06-05 01:53:49|2|0 2007-06-05 04:56:39|6|0 2007-06-05 04:56:57|3|0 2007-06-05 04:58:24|4|0 2007-06-05 05:05:19|5|0 2007-06-05 05:07:40|1|0 2007-06-05 14:53:49|6|1 2007-06-05 14:56:39|2|1 2007-06-05 14:56:57|3|1 2007-06-05 14:58:24|1|1 2007-06-05 15:05:19|5|1 2007-06-05 15:07:40|4|1 Teraz chciałbym napisać coś co by i pożeniło to w całośc czyli: | NrPrac| Dodot | Dodot | 2|2007-06-05 01:53:49|2007-06-05 14:56:39 6|2007-06-05 04:56:39|2007-06-05 14:53:49 3|2007-06-05 04:56:57|2007-06-05 14:56:57 4|2007-06-05 04:58:24|2007-06-05 15:07:40 1|2007-06-05 05:07:40|2007-06-05 14:58:24 W accesie robie to tak ze rozbijam ta tabele glowna na dwa zapytania ktore roznią sie werukiem na polu we_wy w jednym zapytaniu jest 0 w drugim 1, nastepnie buduje trzecie zapytanko i uzywam ich jako zrodeł łacząc relacją po NrPrac, W relacji zaznaczam uwzgleniam wszystkie z pierwszego zapytania a z drugie go tylko te ktore są równe / dzieki temu widze wejscie z pustym polem wyjscia jesli ono nie nastąpiło Jak to napisać w SQL w jednym ciągu by mozna było to potem wysłać do bazy z pomocą PHP Wiem że mozna używać jakiś zapytań z podzapytaniem, ale nie wiem jak je zbudować i czy mssql bedzie potrafił je prawidłowo zinterpretować. Ten post edytował Unises 6.06.2007, 08:46:48 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 6.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Chyba mnie nie zrozumiałeś ja mam tylko jedną tabele z danymi (którą w acccesie rozbiłem na dwa zapytania i połączyłem trzecim by osiągnąć cel), a ty w rozwiązaniu podajesz dwie.
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ja przepraszam ze sie wtrace, ale:
Cytat a ty w rozwiązaniu podajesz dwie. A gdzie SongoQ podal ci tam dwie tabele?Jedna sie nazywa tabela i druga sie nazywa tabela. Widzisz udezajace podobienstwo nazw? A to ze nadal im aliasy t1 i t2 to juz byla koniecznosc. Poczytaj cos najlepiej o aliasach. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 6.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dziekuje!, ale jest cos jeszcze
Witam , raz jeszcze! okazało się ze temat nadal jest aktualny, wyniki zwracane przez to zapytanie są zadawalajace do momentu , gdy NrPrac wystepuje raz na dobe: ma 1 wejscie i 1 wyjscie, a ja ogranicze date za dany dzien,natomiast gdy jeszcze raz wejdzie i wyjdzie (co czesto sie zdarza oddelegowany na 2 godziny po pączki ;-) ) czyli w bazie pojawi sie kolejne dwa rekordy z tym samym NrPrac robi sie kaszanka (zamiast dwóch par, zwraca zwielokrotnione rekordy we wszystkich mozliwych kombinacjach) Co zresztą jest zrozumiałe i wynika z relacji miedzy tabelami. Ja natomist chce wyswietlic wszystkie pary, nawet jesli jeden prac. bedzie wchodził i wychodził 8 razy i nawet na przstrzeni zmiany doby. Kombinowałem na boku jak zwykle w Access i jedyne co zrobiłem to zapytanie krzyzowe które pokazuje mi własciwe pary ale tylko wartosci maksymalne czyli ostatnie wejscie i wyjscie i to nawet nie wjenym wierszu, tylko na ukos ![]() Jak wyswietlic wszystko czyli weszło np dwóch z czego jeden dwa razy wchodził i wychodził , co daje nam 6 par (z tego dwie dla jednego pracownika?) Nie mam wpływu na projekt tabel i bazy. Przeczytałem posty o wyswietlaniu najbliższych i jakos mnie nie olsniło ![]() Ten post edytował Unises 11.06.2007, 09:25:25 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy da sie tak zrobic. Najprosciej i najszybciej jest napisac funkcyjke do tego.
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 6.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem ze piszac zdrobniale funkcyjke chcesz mnie pocieszyc ze to niby takie łatwe
![]() W zarysie wyobrazam sobie to tak:Tworzymy jakąs chyba tablice do ktorej wrzucamy tylko rekordy Dodot <=2007-06-10 00:00:00 and >= 2007-06-11 00:00:00 i znajdujemy np NrPrac = 2 pobieramy date i sprawdzamy ww=0 (wszedł)znajdujemy kolejny NrPrac =2 i patrzymy czy data jest wieksza i czy rekord ma ww=1. czyli wyszedł i czy jednoczesnie jesli isteje/badz nie kolejny z ww=0 czy data jest mniejsza itd, jesli nie ma juz rekordu z nr parac=2 to bierzemy nastepny NrPrac i tak cały zestaw dla n prcowników i tak sie to pętli do konca (dna) utworzonej tablicy czy czegos tam. Wszystko Super tylko brakuje mi jezyka zeby to napisac w php (bo jestem jasnozielony) |
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
No tak przy pomocy tablic. Albo mozesz jeszcze inaczej do tego podejsc. Tworzysz tabele tak jak by taka posrednia gdzie zapisujesz masz id | wej_id | wyj_id Wtedy nic nie musisz oblicza wszystko wynika z prostej relacji.
-------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 07:29 |