Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak wykonać takie zapytanie
Forum PHP.pl > Forum > Bazy danych > MySQL
dresik
Witam,
męczę się już od jakiegoś czasu i niewiem jak zrobić takie zapytanie:

np. mając tabele: sql
pole: modul

i przykładowe wpisy:
1-1-1-1-1-1-1
1-1-1-1--1-1
1-1--1-1--1
---1---

i np chce wybrać wiersze które po trzeciej - (kresce) mają 1

  1. SELECT * FROM sql WHERE modul='?'


co dopisać w zapytaniu aby się takie cos pojawiło?
blooregard
  1. SELECT * FROM sql WHERE modul LIKE '%---1%'

ale głowy sobie uciąć nie dam...
wookieb
Co ty w tym polu dokładnie przechowujesz?

  1. SELECT * FROM `test` WHERE pole REGEXP "^1?-1?-1?-1"


Wejście:
1-1-1-1-1-1-1
1-1-1-1--1-1
1-1---1--1
---1---

Wyjście:
1-1-1-1-1-1-1
1-1-1-1--1-1
---1---
dresik
Cytat(wookieb @ 28.07.2009, 14:31:30 ) *
Co ty w tym polu dokładnie przechowujesz?


1 lub nic np. 1-1-1-1 lub --1-1--- itp
wookieb
No tak ale jakie to ma znaczenie dla systemu? W sensie to są jakieś uprawnienia czy co?
blooregard
Cytat
1 lub nic np. 1-1-1-1 lub --1-1--- itp

Tobie chyba chodzi o to, że pole może mieć wartość 1 lub - (puste), a ciąg wynikowy z zapytania np. dla pięciu rekordów może mieć postać:
1--1-

tak?
dresik
Cytat(blooregard @ 28.07.2009, 14:36:38 ) *
Tobie chyba chodzi o to, że pole może mieć wartość 1 lub - (puste), a ciąg wynikowy z zapytania np. dla pięciu rekordów może mieć postać:
1--1-

tak?



tak to chodzi o to że 1 lub puste. To są zapisane ustawienia. 1 oznacza właczony a puste wyłaczony jakiś moduł.
i chce wyszukać wszystkie wiersze w których jest 3 moduł włączony czyli ma 1 po drugiej kresce:

np.
--1...
1-1-1...
1--1...
-1-1..

Cytat(blooregard @ 28.07.2009, 14:30:00 ) *
  1. SELECT * FROM sql WHERE modul LIKE '%---1%'

ale głowy sobie uciąć nie dam...



to nie działa
wookieb
czyli
  1. REGEXP ".{2}1"
dresik
przepraszam ale jednak mam i 0 w tej bazie np. 0-0-0-1-1--

ale to mi bez róznicy bo tylko sprawdzam czy jest 1 czy nie.

I z tym REGEXP ".{2}1" to nie działa niestety
wookieb
No to zmodyfikuj odpowiednio zapytanie z mojego 1 posta tylko zamiast 1? wstaw[0-1]
dresik
ok działa, dzięki wielkie. Ale jak jeszcze to przerobić żeby wybrać dane które mają cyfry inne niż 0 i puste.

bo mam też drugą table gdzie zamist 1 mam numery id danych z innych tabel i chciałbym takie cos zrobić zeby wybrało te wiersze które nie mają np po drugiej kresce 0 lub puste pola,

np. żeby wybrało wpisy które mają:

--23---...
--3---...
-4-222-2...

a żeby pominąć takie:

1-1--111-1
---------
--0----
1-1-0-1-1-1
wookieb
Tak trudno było ruszyć tyłek do wyrażen regularnych?
http://doctor.programuj.com/wyraenia-regularne-w-praktyce
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.