![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 16.11.2013 Ostrzeżenie: (0%) ![]() ![]() |
Cześć
Mam tabelę, w której w jednej z kolumn znajdują się jakieś powtarzające się wartości. Niech to będą na przykład A, B, C, D, E, F. Potrzebuję pobrać np. rekordy A, ale tylko te, które występują bezpośrednio po np. B albo po np. B lub C. Na przykład: 1. B 2. A 3. D 4. A 5. C 6. A 7. B 8. A Dla "A po B" zapytanie zwróci rekordy 2 i 8. Dla "A po B lub C" zapytanie zwróci rekordy 2, 6 i 8. Jak takie zapytanie skonstruować? |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jesi chcesz to zrobic tylko na poziomie baze, to musisz skorzystac ze zmiennych w mysql.
W zmiennej przechowujesz aktualną wartosc, a przy nastepnym rekordzie porownujesz ją do B lub C. Ot i wszystko (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Tak na szybko... Dlatego MUSI zachodzić warunek ciągłości id. |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Moja wersja nie wymaga ciaglosci (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Moja też nie...:
Tamta była pisana "na szybko" (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Moja jest wydajniejsza, wymaga tylko i wylacznie jednego glownego SELECT a nie jakis dzikich kombinacji (IMG:style_emoticons/default/wink.gif)
Twoja ma jednak jedną wielka zalete: jest podana na tacy, podczas gdy moją autor musi sam sklecic (IMG:style_emoticons/default/wink.gif) Podejrzewam wiec, ze twoja w oczach autora jest lepsza. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
To raczej taka 'wprawka' dla samego siebie... Staram się wszystko rozwiązać via SQL. I to najlepiej w bazie. Na razie nie mam z tym problemów... Co więcej - piszę w czystym ANSI SQL. Powyższe zadziała zarówno w MySQL, jak i postgreSQL. Jakbym miał "typowane" to wtedy bym optymalizował...
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ale moje tez jest na czystej bazie. zero php czy innych takich pierdol (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 16.11.2013 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za odpowiedzi. Niezaprzeczalnym plusem rozwiązania mmmmmmm jest podanie go na tacy (IMG:style_emoticons/default/smile.gif) . Lepsza wydajność rozwiązania nospor wydaje się jednak być ważniejsza. Ma jednak faktycznie taki minus, że muszę je sam zapisać. Jest to minus, jak na razie dla mnie, nieprzeskakiwalny (IMG:style_emoticons/default/sad.gif) . Jeszcze przez jakiś czas mogę pozostać przy starym rozwiązaniu w PHP. Z dużej tabeli pobieram sobie rekordy według pewnych kryteriów i dopiero ten wynik przetwarzam sobie kodem o takim schemacie:
Jak dotąd ilość tych rekordów do przetworzenia jest niewielka więc wydajność takiego rozwiązania nie ma dla mnie większego znaczenia. Problem pojawi się gdy będę chciał rozszerzyć kryteria ich wyboru i znacznie wzrośnie ich ilość. Dlatego chciałem zdać te obliczenia na bazę danych. Niestety, poza podstawowymi poleceniami SQL niewiele z niego kojarzę (IMG:style_emoticons/default/wink.gif) . |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 16.11.2013 Ostrzeżenie: (0%) ![]() ![]() |
Bardzo Wam dziękuję. Oba rozwiązania bardzo mi pomogą..
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 17:14 |