![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 173 Pomógł: 1 Dołączył: 4.05.2010 Ostrzeżenie: (20%) ![]() ![]() |
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 173 Pomógł: 1 Dołączył: 4.05.2010 Ostrzeżenie: (20%) ![]() ![]() |
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 23:40 |