Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP, MySQL] Wybranie odpowiedniego rekordu [SELECT], Funkcja z dwoma warunkami
Aryman
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 12.12.2010

Ostrzeżenie: (0%)
-----


Witam,
Od razu chciałbym zaznaczyć że dopiero zaczynam z językami PHP i MySQL, traktuje to bardziej jako hobby oraz naprawdę coś przyjemnego biggrin.gif.

Nie mogę nigdzie znaleźć odpowiedzi na swoje pytanie. Chciałbym uzyskać funkcję która obliczy mi z przedziału licz najmniejsze puste miejsce.

Chodzi o to że wyobraźcie sobie tabliczkę czekolady, posiada załóżmy 40 kawałków. Nagle ktoś wyciąga ze środka jeden kawałek i z końca drugi kawałek.
Funkcja miała by polegać na obliczeniu pierwszego pustego miejsca, nie tego drugiego, nie ostatniego lecz pierwszego.

Dokładniej mój problem wygląda tak:

Potrzebuje uzupełniać pewien program kawałek po kawałku. Takich kawałków jest aż 45. Liczymy od 0 do 44!. Więc zakres 0 - 44.
Gdyby chodziło o tylko wypełnianie pustych 45 kwadratów kawałkami, nie było by problemu. Lecz jest możliwość wyjęcia w dowolnej chwili dowolnego kawałka, kwadracika haha.gif.

Załóżmy mamy takie rekordy:


Kod
0    
1    
2    
3    
5    
7    
10    
13    
15    
16    
19    
20    
21    
22    
37    
38    
40    
41    
42    
44    
45



Widzimy ile posiada pustych pól po segregacji, no i problem w tym że chciałbym automatycznie zmienną po wpisaniu np. numeru ID grupy tych rekordów, aby dodał PIERW najmniejszy brakujący element. Czyli w tym wypadku 4. Gdy 4 dopisze, miałby uzupełnić "6" itd. W wypadku gdy znowu wyciągniemy, on wraca i uzupełnia pierwszy brakujący.

Nie wiem, nie mam zielonego pojęcia jak ustawić "SELECT" z jakim atrybutem sad.gif dopiero zaczynam z tymi językami, Wiem że są łatwe, ale bez pomocy jednak ciężko.
Gdyby ktoś byłby tak miły i pomógł mi w ustaleniu tej funkcji zmiennej.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
lukaskolista
post
Post #2





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

Ostrzeżenie: (0%)
-----


Nie wiem, czy dobrze Cie zrozumialem, wiec moge nie rozwiazac Twojego problemu. Moze po prostu pobierz identyfikatory wszystkich "kawalkow" (rekordow) i przelec je petla po kolei sprawdzajac, czy identyfikator kolejnego rekordu jest o 1 wiekszy od poprzedniego. Jezeli jest wiekszy, niz o 1 to znaczy, ze czegos brakuje i trzeba to uzupelnic. Zapytania insert (te ktore dodaje brakujace kawalki) zapisuj do zmiennej i wykonaj za petla (zamiast przykladowo 10 zapytan wykonasz 1 zapytanie dodajace brakujace kawalki)
Go to the top of the page
+Quote Post
Aryman
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 12.12.2010

Ostrzeżenie: (0%)
-----


Cytat(lukaskolista @ 12.12.2010, 07:10:59 ) *
Nie wiem, czy dobrze Cie zrozumialem, wiec moge nie rozwiazac Twojego problemu. Moze po prostu pobierz identyfikatory wszystkich "kawalkow" (rekordow) i przelec je petla po kolei sprawdzajac, czy identyfikator kolejnego rekordu jest o 1 wiekszy od poprzedniego. Jezeli jest wiekszy, niz o 1 to znaczy, ze czegos brakuje i trzeba to uzupelnic. Zapytania insert (te ktore dodaje brakujace kawalki) zapisuj do zmiennej i wykonaj za petla (zamiast przykladowo 10 zapytan wykonasz 1 zapytanie dodajace brakujace kawalki)



O Właśnie, dobrze to opisałeś, jak zrobić pętle sprawdzającą? Mógłbyś pomóc?smile.gif
Pozdrawiam ;D
Go to the top of the page
+Quote Post
lord2105
post
Post #4





Grupa: Zarejestrowani
Postów: 380
Pomógł: 59
Dołączył: 24.04.2010
Skąd: London

Ostrzeżenie: (0%)
-----


Proszę zapytanie, które wskaże Ci pierwszy wolny rekord wystarczy troszkę dopisać w PHP i gotowe smile.gif

  1. SELECT t1.id + 1 AS id FROM tabela t1 LEFT JOIN tabela t2 ON t1.id = t2.id + 1 WHERE t2.id IS NULL ORDER BY t1.id LIMIT 1


--------------------
40% rozwiązań znajduje się tutaj.
59,9% tutaj.

Jeśli pomogłem rozwiązać Twój problem wciśnij
Go to the top of the page
+Quote Post
Aryman
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 12.12.2010

Ostrzeżenie: (0%)
-----


Hmmm kod mi trochę mówi ale nadal nie mogę dojść jak to zrobić.
Mam takie wyniki, rekordy w bazie:

Kod
owner_ID          window                   pos    count
27                         MALL            2    1
27                    MALL             1    1
27                    MALL             0    1
27                    MALL            3    1
27                    MALL                6    1
27                    MALL            7    1
27                    MALL                18    1


Chodzi o to aby SELECT wybrał mi brakujące pole aby potem INSERT'em wsadzić odpowiedni REKORD z brakującą zmienną $pos.

SELECT musi wybrać pusty "pos" "WHERE owner_ID = '27' AND window = 'MALL'"
Nie mam tam rekordu typu
27 MALL NULL count i rekordy nie są segregowane w bazie, wszystko musi robić zapytanie sad.gif.
Próbowałem pokombinować z Twoim zapytaniem ale nie mogłem nic zdziałać.
Pozdrawiam Ary

Ten post edytował Aryman 12.12.2010, 16:12:15
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 17:59