![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 13.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Potrzebuje małej pomocy w rozwiązaniu problemu.
Mam tabele z kolumnami wysokosc i szerokosc według których wykonuje różne operacje. Teraz potrzebuję zapytanie mysql, które znajdzie mi współrzędne pozycji nie znajdującej się w tabeli. Obrazowo wygląda to tak: przykładowa tabela: --------------------------------- | id | wysokosc | szerokosc | ---------------------------------- | 1| 3 | 2 | | 2| 4 | 2 | | 3| 4 | 3 | | 4| 5 | 2 | | 5| 5 | 3 | | 6| 5 | 4 | | 7| 6 | 2 | | 8| 6 | 3 | | 9| 6 | 4 | |10| 6 | 5 | |11| 7 | 2 | |12| 7 | 5 | |13| 7 | 6 | ---------------------------------- Na jej podstawie powstaje mi taka tablica wyników: 3,2 (wysokosc, szerokosc) 4,2 4,3 5,2 5,3 5,4 6,2 6,3 6,4 6,5 7,2 brak brak 7,5 7,6 W takim układzie mam dwie dziury: 7,3 7,4 Teraz potrzebuję takiego zapytania, które pomoże mi znaleźć najniższe możliwe współrzędne, których nie mam w tabeli. Pominąłem 1,1, bo nie zawsze poszukiwania będę zaczynał od tych współrzędnych. Doszedłem do takich wyników: Zapytanie do pobrania całości danych z bazy wygląda tak: Kod SELECT * FROM `tabela` WHERE wysokosc>='3' and szerokosc>='2' and szerokosc<=wysokosc+2-3 order by wysokosc ASC dla współrzędnych startowych 3,2. Pobranie danych i obróbka w php jest bezsensowna, bo pozycji będzie zbyt wiele. Czasem się przyda przy listowaniu i paginacji. Próbowałem szukać danych po rzędach, ale to też nie rozwiązuje mojego problemu, bo to są kolejne zapytania do bazy. Szczególnie, że nie znam konkretnej wysokości. Oto moje zapytanie: Kod //zmienne startowe $start_wys=3; $start_sz=2; //zapytanie mysql SELECT id, wysokosc, szerokosc, szerokosc + 1 brakujaca_pozycja_sz FROM `tabela` t WHERE NOT EXISTS ( SELECT * FROM `tabela` WHERE wysokosc='7' and szerokosc=t.szerokosc + 1 and szerokosc<=wysokosc+$start_sz-$start_wys ) and wysokosc='7' and szerokosc>='$start_sz' and szerokosc<=wysokosc+$start_sz-$start_wys-1 ORDER BY szerokosc LIMIT 1 Ten kod wyszukuje mi w 7 wierszu dla pozycji o współrzędnych startowych 3,2 Jak znaleźć te współrzędne przeszukując całą tabelę nie znając wiersza, a mając tylko dane startowe? Z góry dzięki za pomoc. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.06.2025 - 07:05 |