![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam tabelę z zakresami: w jednej kolumnie jest początek zakresu, a w drugiej - koniec zakresu.
Np Kolumna A Kolumna B Zakres 1 4 4 7 10 4 16 23 8 Jak można z bazy wydobyć zakresy między moimi rekordami, czyli w tym przykładzie 5-6 i 11-15? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Spróbuj wyrazić się jaśniej. i co to za kolumna Zakres. I skąd ci sie wziely wartości: 5-6 i 11-15 (wytlumacz)
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj wyrazić się jaśniej. i co to za kolumna Zakres. I skąd ci sie wziely wartości: 5-6 i 11-15 (wytlumacz)
Zakres = KolumnaB - KolumnaA + 1, czyli ilość wszystkich numerów w danym zakresie. Wartości 5-6 i 11-15 to te, których nie ma w zakresach, a chcę je znaleźć |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Dzięki za wyjaśnienia. Teraz wszystko jasne.
No to chyba się tego nie da zapytaiem zrobić. Będziesz chyba musiał to w php zrobić. -------------------- "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: 7 Pomógł: 0 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ale jak? Czy mozesz mi pomoc?
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
a czy te zakresy mogą nachodzic na siebie? tzn.czy moze zaisteniec tak sytuacja:
1 4 4 2 10 11 8 12 5 ? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie mogą, każdy zakres następuje nie wcześniej niż po końcu poprzedniego.
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No dobra. napisalem skrypcik:
twoim zdaniem będzie pobrać z bazy swoje zakresy i wpisać je do tablicy $zakresy. CHyba umiesz pobierać dane z bazy? Jak nie to poczytaj se mysql_query() i mysql_fetch_array(). MOżesz również generować brakujace zakresy na bieżąco podczas pobierania danych z bazy. Bedziesz musial jednak ten skrypt wówczas troche zmodyfikowac. Powodzenia ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
![]() 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%) ![]() ![]() |
Ja bym zrobil na zasadzie zlaczenia LEFT JOIN i wykuczyl te rzeczy ktore sie powtarzaja. Wtedy dostajemy te wartosci ktore nie wystepuja.
-------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@SongoQ zaintrygowales mnie
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
![]() 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%) ![]() ![]() |
@nospor Chodzilo mi o cos takiego.
Zwraca przedzialy, tylko trzeba uwzglednic dolny zakres. Pisalme szybko wiec moglem jeszce czegos nie uwzglednic. -------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@SongoQ wow, a ja glupi skrypt w php pisalem (może komus sie przyda). Muszę czasami jednak przemyśleć sql a potem rezać skrypty
![]() 5 0 11 6 24 15 Wystarczy teraz na krzyż polaczyc i sie otrzyma przedzialy 5-6, 11-15 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
![]() 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%) ![]() ![]() |
Cytat Wystarczy teraz na krzyż polaczyc i sie otrzyma przedzialy 5-6, 11-15 No tak, zastanawiam sie czy nie dalo by sie odrazu bez zadnych podselektow zrobic. -------------------- |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czegoś nie rozumiem... Czy mogę połączyć tabelę ze samą sobą? U mnie to wygląda tak:
SELECT (tabela1.ostatni_numer + 1) AS ostatni_numer, (tabela1.pierwszy_numer - 1) AS pierwszy_numer FROM tabela1 LEFT JOIN tabela1 ON (tabela1.pierwszy_numer = tabela1.ostatni_numer + 1) WHERE tabela1.ostatni_numer IS NULL I nie działa. Gdzie zrobiłem błąd? |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
NIee robisz aliasów . Zobacz, że w rozwiązaniu @SongoQ są aliasy, czyli
...tabela t1... tabela t2.... -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#16
|
|
![]() 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
#17
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zastosowałem Twoe zapytanie SongoQ, ale wyskoczył mi komunikat, że nie może znaleźć kolumny ostatni_numer
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
kolega @SongoQ jedynie zmodyfikowal Twoj kod. A masz wogole kolumne ostatni_numer?
Jak masz to spróbuj ewentualnie tak:
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 29.06.2005 Ostrzeżenie: (0%) ![]() ![]() |
Kolumnę ostatni_numer mam na pewno! :-) Poza tym Jak robię samego selecta to jest ok - Problem pojawia się kiedy do zapytania dodam złączenie.
|
|
|
![]()
Post
#20
|
|
![]() 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%) ![]() ![]() |
mama pomylka.
ma byc (t1.ostatni_numer + 1) AS ostatni_numer2, -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 03:45 |