![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 30.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem z wybraniem danych z tabel polaczonych relacja wiele do wielu Jeśli ktoś będzie mógł mi pomoc to poprosze o podpowiedz Są trzy tabele: Zapytanie: pokaz nazwiska i imiona osob ktore znaja angielski podstawowy i rosyjski podstawoawy Powinien wyswietlic wynik (dwie osoby): 1) Wax Colanko 2) Piotr Kowalski TABELE: 1) tbl_user - id_user - imie_user - nazwisko_user 2) tbl_jezyki_obce - id_jezyka - nazwa_jezyka 3) tbl_jezyki_user (tabela łącząca) - id_jezyki_users - id_user - id_jezyka Przykładowe dane w tabelach: tbl_user: 1 - Wax - Colanko 2 - Piotr - Kowalski 3 - Jakub - Wisniewski tbl_jezyki_obce: 1 - angieslki podstawoawy 2 - angielski sredni 3 - angielski zaawansowany 4 - niemiecki podstawoawy 5 - niemiecki sredni 6 - niemiecki zaawansowany 7 - rosyjski podstawoawy 8 - rosyjski sredni 9 - rosyjski zaawansowany tbl_jezyki_user: 1 - 1 - 1 2 - 1 - 5 3 - 1 - 7 4 - 2 - 1 5 - 2 - 4 6 - 2 - 7 7 - 3 - 2 8 - 3 - 4 9 - 3 - 7 moje zapytanie ktore nie dziala!!! - co tutaj jest nie tak? SELECT tbl_user.imie_user, tbl_user.nazwisko_user FROM tbl_user, tbl_jezyki_obce, tbl_jezyki_user WHERE tbl_jezyki_user.id_user = tbl_user.id_user AND tbl_jezyki_user.id_jezyka = tbl_jezyki_obce.id_jezyka AND (tbl_jezyki_user.id_jezyka = '1' AND tbl_jezyki_user.id_jezyka = '7') id_jezyka = '1' -> angielski podstawoawy id_jezyka = '7' -> rosyjski podstawoawy oczekiwany wynik: 1) Wax Colanko 2) Piotr Kowalski tylko te dwie osoby znaja oba jezyki angielski podstawoawy i rosyjski podstawoawy Dzieki i pozdrawaim, Marcel |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 380 Pomógł: 2 Dołączył: 5.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
mam problem z wybraniem danych z tabel polaczonych relacja wiele do wielu to znaczy jaki problem? bo na razie tylko opisales co masz a nie napisales czego nie umiesz zrobic?Cytat moje zapytanie ktore nie dziala!!! - co tutaj jest nie tak? nie dziala to znaczy co? wywala bledy czy co?co w "tlumaczeniu na polski" robi ten warunek: ? -------------------- Wybierasz się do Zakopanego? Odwiedź Willę Pod Górami. Następnym razem na pewno do niej wrócisz :)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 30.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
chodzi o to aby pokazal osoby ktore znaja dwa jezyki: angielski
podstawowy i rosyjski podstawoawy zapytanie ktore przedstawilem nie wyswielta oczekiwanego wyniku tzn: dla mnie wynikiem sa osoby: 1) Wax Colanko 2) Piotr Kowalski tylko te dwie osoby znaja oba jezyki angielski podstawoawy i rosyjski podstawoawy trzecia osoba z przykaldu Jakub Wisniewski zna rosyjski podstawoawy ale nie zna angielskiego podstawowego wiec nie powinien sie wyswietlic (tbl_jezyki_user.id_jezyka = '1' AND tbl_jezyki_user.id_jezyka = '7') - uznalem ze to jest wrunek aby wybrac angielski podstawoawy i rosyjski podstawoawy tzn: id_jezyka = '1' -> angielski podstawoawy id_jezyka = '7' -> rosyjski podstawoawy Widocznie zle rozumiem te relacje i nie potrafie ulozyc odpowiedniego zapytanie dlatego prosze o pomoc. W skrocie moje pytanie brzmi: Prosze napisac zapytanie ktore na podstawie przedstawionych tabel i wartosci wyswietli tylko te osoby ktore znaja oba jezyki. (angielski podstawoawy i rosyjski podstawoawy) Pozdr, Marcel Ten post edytował marceli80 14.02.2007, 11:22:07 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 24.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Moja propozycja:
Lub też jeżeli jest SQL z obsługą podzapytań:
Pozdrawiam Kosmi -------------------- Elektrotechnika z Informatyką Techniczną. Studia w Lesznie!
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 380 Pomógł: 2 Dołączył: 5.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
(tbl_jezyki_user.id_jezyka = '1' AND tbl_jezyki_user.id_jezyka = '7') troche przekombinowales bo pole nie moze miec dwoch roznych wartosci jednoczesnie, masz blad logiczny w tym wlasnie fragmencie zapytania
- uznalem ze to jest wrunek aby wybrac angielski podstawoawy i rosyjski podstawoawy -------------------- Wybierasz się do Zakopanego? Odwiedź Willę Pod Górami. Następnym razem na pewno do niej wrócisz :)
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 25.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Odświeżam temat, bowiem napotkałem na podobny problem jak marceli80. Z tego, co mi do tej pory poradzono to powinienem zamienić relację wiele do wielu na jeden do wielu. Nie wiem jednak jak to zrobić i czy to w ogóle sprawdzi się w tym przypadku. Jeśli ktoś miał podobny problem, to bardzo proszę o jakieś wskazówki. Z góry dziękuję i pozdrawiam ![]() Dawid. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
A podstawy baz danych zna?
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 25.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Zna, zna
![]() Przedstawię może pokrótce mój przykład: Tabela users_cars: ![]() Jest to tabela pomocnicza przy relacji wiele do wielu. Chcę w jednym zapytaniu uzyskać ID użytkownika, który posiada określone samochody. Dla przykładu mając dane ID samochodów 1, 2 i 3, powinienem jako wynik uzyskać 2. Zapytanie typu: "SELECT userID FROM users_cars WHERE carID IN (1, 2, 3)" nie działa tak jak chcę, bowiem zwraca użytkowników, którzy posiadają samochody 1 lub 2 lub 3. Wgłębiam się powoli w temat normalizacji bazy danych, jednak jak na razie nie widzę nic nowego co mogłoby mi się przydać. Pozdrawiam, Dawid Ten post edytował Namrasit 21.07.2009, 15:52:08 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
No skoro podałeś nazwę nie tej kolumny, co trzeba, to się dziwisz...? PS. zdałoby się distinct.
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 25.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
To była tylko literówka
![]() Może napisze tak: Mając taki układ tabel ![]() Widzimy, że jedna osoba może jeździć kilkoma samochodami, a każdym samochodem może jeździć wiele osób (przykład wyssany z palca ![]() Dziękuję za wszelkie sugestie i jeszcze raz pozdrawiam, Dawid. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Aha, masz na myśli osoba, która jeździ 1 I 2 I 3, a nie 1 LUB 2 LUB 3?
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 25.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie tak
![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Pomyśl, co dalej. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 25.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Ałć, faktycznie.
Klepię z palucha:
-------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 25.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
W tym przypadku jest tak samo jak w poprzednim, wartości carID nie mogą być równocześnie równe 1, 2 i 3
![]() Dawid. |
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Fajny problem. [; -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 25.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Powiem Ci, że problem bardzo ciekawy. Zwykle nie udzielam się na forach, bo wszystko znajduję w sieci, ale w tym przypadku jest inaczej
![]() Wracając do tematu, to Twoje zapytanie po wstępnych testach wydaje się działać prawidłowo ![]()
W ten sposób w wyniku otrzymujemy tylko użytkownika który spełnia tylko i wyłącznie te 3 kryteria. Takie niby OR ale AND ![]() ![]() Pozdrawiam Dawid. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 00:43 |