![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 29.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
Mam powiedzmy tabele "obsluga". W tej tabeli znajduje sie kolumna "urzadzenie". Kolumna ta moze przyjmowac wartosci A, B lub C, ale czasem moze sie zdarzyc, ze pojawi sie tez wartosc D. Czy mozna napisac jedna komende SELECT, przy pomocy ktorej moge wyszukac wierszy z wartoscia A o ile w kolumnie nie ma wartosci D. W sytuacji kiedy sa wartosci D to wyszuka mi wiersze nie z wartoscia A tylko z D.
|
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 20 Dołączył: 19.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
jak moze być wartosc a lub b lub c lub d to jak mozesz miec jednoczesnie a i d jak chcesz sprawdzic czy jest a i d jednoczesnie
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
nospor, poli25 chyba nie zrozumieliście kolegi...
EDIT: Nie wydaje mi się żeby było możliwe wykonanie tego jednym zapytaniem. Ten post edytował sadistic_son 29.02.2012, 11:39:03 |
|
|
![]() ![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 20 Dołączył: 19.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
byc może;)
... Czy mozna napisac jedna komende SELECT, przy pomocy ktorej moge wyszukac wierszy z wartoscia A o ile w kolumnie nie ma wartosci D. a wczesniej jest napisane ze moze byc tylko a,b,c,lub d wiec dla mnie nie logiczne to jest p.s. moze chodzilo o to SELECT * FROM obslua WHERE urzadzenie = 'd' and urzadzenie <> 'a' Ten post edytował poli25 29.02.2012, 11:43:57 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
a wczesniej jest napisane ze moze byc tylko a,b,c,lub d wiec dla mnie nie logiczne to jest ID | urzadzenie | costam | 1 | A | sjbcbfd | 2 | B | 34dr24 | 3 | A | dddfff | 4 | D | ggggg | A teraz? Gdyby w tabeli były tylko ekordy 1,2 i 3 to kolega chciałby pobrać 1 i 3. Natomiast kiedy są 4 rekordy to chce pobrać już tylko rekord z ID = 4 . Dobrze rozumiem? EDIT: p.s. moze chodzilo o to No to to przecież masło maślane ;P Skoro urządzenie jest równe D to przecież zawsze będzie różne od A.
SELECT * FROM obslua WHERE urzadzenie = 'd' and urzadzenie <> 'a' Ten post edytował sadistic_son 29.02.2012, 11:57:10 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 239 Pomógł: 20 Dołączył: 19.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
no ale pytanie tez jest masłem więc moze odpowiedz z masłem tez jest ok (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
A ja myślę, że chodzi o rozwinięcie pierwszego posta nospora, czyli...
Wybieramy wszystkio z tabeli co ma A, albo D, tylko że teraz mamy sens całego wykonać... Jeśli istnieje taki wiersz w kolumnie obsługa, gdzie jest jednocześnie A i D, to ma wziąć pod uwagę wiersz z D, olewając wiersz z A. I wyślę, że jest to wykonalne, ale jako że nie znamy dokładniejszej struktury tabeli to trudno powiedzieć jak mogło by to zapytanie wyglądać, gdyż albo można będzie użyć kombinacji z grupowaniem albo union. Ale bez struktury i tego gdzie są jakieś klucze, trudno powiedzieć i podać gotowe zapytanie. Ogólnie sens byłby taki "od tyłu"... Wybierz wszystkie rekordy z D, a potem dorzuć wszystkie rekordy, które mają A i nie posiadają jednocześnie D. Przynajmniej tak to według mnie wyglada (IMG:style_emoticons/default/smile.gif) Wyjaśnienie 2: Może też być tak, jak rozumuje sadistic_son i jak wprost napisał autor: Jeśli w tabeli są tylko w kolumnie wartości A, B, C, to wyszukujemy jedynie tych z A. Ale jeśli w kolumnie zostanie wykryta choć jeden wiersz z wartością D, to tylko tych wierszy z D należy wyszukać. |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
poli przestan już. Niech autor wyjaśni o co mu chodzi dokładnie. Póki co odpowiedź sadistic_son wydaje się być najbliżej prawdy. No ale to musi rozstrzygnąć autor pytania a nie my między sobą.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 29.02.2012 Ostrzeżenie: (0%) ![]() ![]() |
nie spodziewalem sie tak szybkiej reakcji, jakbym wsadzil kij w mrowisko. Dobrze mnie zrozumial Sadistic_son. Wiec czy jest to mozliwe w jednym zapytaniu czy trzeba juz kombinowac? (sam myslałem o sprawdzeniu to w ten sposób co Sadistic_son, ze wpierw sprawdzam D a jak nie to biore A. Nie znam dobrze możliwości języka zapytań SQLa. A chcę jak najwięcej przerzucić na bazę danych)
Ten post edytował mike75 29.02.2012, 12:22:01 |
|
|
--mike75-- |
![]()
Post
#11
|
Goście ![]() |
Udało mi się rozwiązać problem. Wszystko w jednym zapytaniu przy wykorzystaniu funkcji CASE i podzapytań. Trochę to trwało, bo wcześniej nie bawiłem się SQLem i nie wiedziałem jakie możliwości w tym drzemią.
Dzięki wszystkim za pomoc. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 16:21 |