Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> SQL Rekordy których nie ma
kinski
post
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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No dobra. napisalem skrypcik:
  1. <?php
  2.  
  3. $zakresy = array();
  4. $zakresy[0]['begin'] = 1;
  5. $zakresy[0]['end'] = 4;
  6. $zakresy[1]['begin'] = 7;
  7. $zakresy[1]['end'] = 10;
  8. $zakresy[2]['begin'] = 16;
  9. $zakresy[2]['end'] = 23;
  10. $size = count($zakresy);
  11. $missing = array();
  12. $in = 0;
  13. for ($i = 0; $i < $size - 1; $i++ )
  14. {
  15. if ($zakresy[$i]['end']+< $zakresy[$i+1]['begin'] )
  16. {
  17.  
  18. $missing[$in]['begin'] = $zakresy[$i]['end']+1;
  19. $missing[$in]['end'] = $zakresy[$i+1]['begin']-1;
  20. $in++;
  21. }
  22. }
  23. foreach ($missing as $zakres)
  24. {
  25. echo &#092;"{$zakres['begin']} - {$zakres['end']} <br>\";
  26. }
  27.  
  28.  
  29. ?>


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie
- kinski   SQL Rekordy których nie ma   29.06.2005, 07:11:44
- - nospor   Spróbuj wyrazić się jaśniej. i co to za kolumna Za...   29.06.2005, 08:07:28
- - kinski   Spróbuj wyrazić się jaśniej. i co to za kolumna Za...   29.06.2005, 08:13:14
- - nospor   Dzięki za wyjaśnienia. Teraz wszystko jasne. No t...   29.06.2005, 08:23:54
- - kinski   Ale jak? Czy mozesz mi pomoc?   29.06.2005, 08:26:35
- - nospor   a czy te zakresy mogą nachodzic na siebie? tzn.czy...   29.06.2005, 08:47:03
- - kinski   Nie mogą, każdy zakres następuje nie wcześniej niż...   29.06.2005, 08:48:56
- - nospor   No dobra. napisalem skrypcik: [PHP] pobierz, plain...   29.06.2005, 09:05:26
- - SongoQ   Ja bym zrobil na zasadzie zlaczenia LEFT JOIN i wy...   29.06.2005, 09:09:00
- - nospor   @SongoQ zaintrygowales mnie . Aczkolwiek rozwiń s...   29.06.2005, 09:13:04
- - SongoQ   @nospor Chodzilo mi o cos takiego. [SQL] pobierz,...   29.06.2005, 09:43:25
- - nospor   @SongoQ wow, a ja glupi skrypt w php pisalem (może...   29.06.2005, 09:54:49
- - SongoQ   CytatWystarczy teraz na krzyż polaczyc i sie otrzy...   29.06.2005, 10:03:27
- - kinski   Czegoś nie rozumiem... Czy mogę połączyć tabelę ze...   29.06.2005, 11:08:43
- - nospor   NIee robisz aliasów . Zobacz, że w rozwiązaniu @So...   29.06.2005, 11:10:38
- - SongoQ   [SQL] pobierz, plaintext SELECT(tabela1.ostatn...   29.06.2005, 11:10:46
- - kinski   Zastosowałem Twoe zapytanie SongoQ, ale wyskoczył ...   29.06.2005, 11:34:14
- - nospor   kolega @SongoQ jedynie zmodyfikowal Twoj kod. A ma...   29.06.2005, 11:57:58
- - kinski   Kolumnę ostatni_numer mam na pewno! :-) Poza t...   29.06.2005, 12:24:09
- - SongoQ   mama pomylka. ma byc (t1.ostatni_numer + 1) AS os...   29.06.2005, 12:46:43


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 17:45