Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Dynamiczne szukanie. Niby proste ale.., MYSQL
www.aukcje.fm
post
Post #1





Grupa: Zarejestrowani
Postów: 173
Pomógł: 1
Dołączył: 4.05.2010

Ostrzeżenie: (20%)
X----


Witam,

Jest problem z zapytaniem (jednym) aby wyłowić te numery id w których występują określone value

ID|VALUE
1|a
1|b
1|c
2|a
2|b
3|a
3|b
3|c
4|z

Czyli wybierz takie numery ID w których występuje a, b, c lub wybierz takie w których występuje a i b.
Oczywiście dla jednego value nie ma problemu.
Użycie "i" odpada. Użycie "lub" odpada bo działa, ale są wyniki z kosmosu nie dokładne.
Pozdrawiam.

Ten post edytował www.aukcje.fm 22.04.2017, 20:16:13
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
www.aukcje.fm
post
Post #2





Grupa: Zarejestrowani
Postów: 173
Pomógł: 1
Dołączył: 4.05.2010

Ostrzeżenie: (20%)
X----


To logiczna operacja na zbiorach gdzie coś się zawiera w całym zbiorze lub nie, tak więc jeżeli się ciągiem logicznym w sytuacji zawarcia w zborze wskazanych liczb zawiera dana liczba a suma kontrolna lub cały ciąg znaków już nie zawiera dla analogicznego zapytania to z całym szacunkiem ale to uznaję jako błąd twórców MySQL.

OR tutaj zmienia sytuację, choć zbiór logiczny typu IN powinien wskazywać na zawarcie logiczne występowania w zbiorze tylko i wyłącznie w zbiorze a nie poza zbiorem i to ŁACZNE, ale dalej jest to błędne działanie MySQL gdyż podaje tylko zawsze to co występuje w ostatniej pozycji więc typuje nam zbiór ID gdzie występuje B a nie A dla zapytania IN ('A','B')

Spoko to łamigłówka przedszkola tygodnia o ile nie miesiąca. Kilka głów już nad tym myślało (IMG:style_emoticons/default/smile.gif)

To tylko dwie kolumny i 9 linii.

ID|VALUE
1|a
1|b
1|c
2|a
2|b
3|a
3|b
3|c
4|z

I teraz select takie ID gdzie Value = a, b, c (jednocześnie)

Po grupowaniu po ID odpowiedź pytona działa ale to jednak jak powiedział Nospr jest OR więc lipa.


IN TO ZAWARCIE W GRUPIE, czyli jako OR jak powiedział Nospr. To prawda i o ile występuje to na zbiorze liczb które nie mają ze sobą relacji i jest ok, to na zbiorze relatywnym od id to już nie działa i jest zwykłym OR.

Zbiór relatywny to już w tym przypadku będzie cięzko w jednym zapytaniu MySQL.

Select `id` from `table` where `value` IN ('a','b') jest jakimś pierwszym członem i teraz by trzeba więc jakoś to posortować gdyż `ID` powinny się powtarzać po 2 dla tych które są w 'a' i 'b' tak aby podać najpierw te id które są po dwa razy.

Ten post edytował www.aukcje.fm 22.04.2017, 21:43:08
Go to the top of the page
+Quote Post

Posty w temacie


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: 12.10.2025 - 23:40