• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

błąd w kwerendzie

Object Storage Arubacloud
0 głosów
352 wizyt
pytanie zadane 16 grudnia 2018 w SQL, bazy danych przez marcinconn Obywatel (1,560 p.)
edycja 16 grudnia 2018 przez marcinconn

mam tabele:

Sale(id, sal_nazwa), Klasa(id,kla_nazwa), Nauczyciel(id, nau_nazwa), Przedmiot(id, prz_nazwa), Dni(id, dni_nazwa), Termin(id, ter_nazwa) oraz Zajęcia(id, id_przedmiotu, id_sali, id_nauczyciela, id_klasy, id_dnia, id_terminu)

spróbowałem zrobić kwerendę wybierającą z tabeli Zajęcia, która za id podstawia wartości z reszty tabel, ale wyrzuca błąd składniowy w wyrażeniu kwerendy. Wie ktoś w jak rozwiązać problem? Dodatkowo powinno wybierać wszystkie id_dnia oraz id_terminu nawet jak nie mają nic dopisane

SELECT Przedmiot.prz_nzwa & ' - ' & Sala.sal_numer & ' - ' & Nauczyciel.nau_nazwa AS Lekcja, Dni.dni_nazwa, Termin.ter_nazwa
FROM Zajęcia INNER JOIN Przedmiot ON Zajęcia.id_przedmiotu=Przedmiot.Identyfikator AND INNER JOIN Sala ON Zajęcia.id_sali=Sala.Identyfikator AND INNER JOIN Nauczyciel ON Zajęcia.id_nauczyciela=Nauczyciel.Identyfikator AND INNER JOIN Dni ON Zajęcia.id_dnia=Dni.Identyfikator AND INNER JOIN Termin ON Zajęcia.id_terminu=Termin.Identyfikator;

używam MS Access

1 odpowiedź

+1 głos
odpowiedź 16 grudnia 2018 przez jeremus Maniak (59,720 p.)
wybrane 17 grudnia 2018 przez marcinconn
 
Najlepsza
--- takie zapytanie zwróci Ci wszystkie dni i terminy i  wstawi lekcję tam gdzie jest
SELECT d.*, z.prz_nazwa & ' - ' & z.sal_nazwa & ' - ' & z.nau_nazwa AS Lekcja 
FROM (select dni.id as id_dnia,dni.dni_nazwa,termin.id as id_ter,termin.ter_nazwa from dni,termin)  d  
left  join  ( select * from ((zajecia x inner join nauczyciel n on x.id_nauczyciela=n.id ) inner join przedmiot p on x.id_przedmiotu=p.id)  inner join sale s on x.id_sali=s.id) z 
on ( z.id_dnia=d.id_dnia  and z.id_terminu=d.id_ter) order by d.id_dnia,d.id_ter


-- a to tylko tam gdzie są lekcje - czyli poprawione Twoje zapytanie
-- uwaga skróciłem nieco nazwy poł aby za dużo nie pisac :)


SELECT Przedmiot.prz_nazwa & ' - ' & Sale.sal_nazwa & ' - ' & Nauczyciel.nau_nazwa AS Lekcja, Dni.dni_nazwa, Termin.ter_nazwa
FROM ((((Zajecia INNER JOIN Przedmiot ON Zajecia.id_przedmiotu=Przedmiot.Id)  INNER JOIN Sale ON Zajecia.id_sali=Sale.Id)  
INNER JOIN Nauczyciel ON Zajecia.id_nauczyciela=Nauczyciel.Id)  inner JOIN Dni ON Zajecia.id_dnia=Dni.Id ) inner JOIN Termin ON Zajecia.id_terminu=Termin.Id;

 

komentarz 18 grudnia 2018 przez marcinconn Obywatel (1,560 p.)
Widziałeś w jakiejś szkole plan zajęć z ułożonymi dniami tygodnia w ten sposób?

Z terminami sobie poardzilem bo wybieram id_terminu jako lp i zawartość, którą mu odpowiada, sortując po id. Problem jest z dniami tygodnia, które domyślnie sortuje alfabetycznie, a chciałbym wg id(nazwa widoczna, nie id)
komentarz 18 grudnia 2018 przez jeremus Maniak (59,720 p.)
to może :

pivot str(id)+'.'+ nazwa

bedzie

1.Poniedziałek      2.Wtorek  itd

trochę oszukańczo ale .. z braku laku

bo chyba pivota nie można co innego pokazywać a po czym innym sortować ?

pewnie da się to zrobić - ale pachnie mi to czymś mocno skomplikowanym - pivot w pivocie chyba :)
komentarz 18 grudnia 2018 przez marcinconn Obywatel (1,560 p.)
Myślę, że sprawę rozwiązałoby wybieranie zamiast dwóch kolumn(id_dnia,Dni_nazwa)  jednej (id_dnia) robiąc jednocześnie inner join wstawiając nazwę dnia pod id.

Zrobiłem dla testów tabelę, w której wpisałem na stałe wartości i kreatorem odnośników stworzyłem relację, w wyniku której pod id miałem podstawioną nazwę dnia. Wtedy zadziałało jak powinno.
komentarz 19 grudnia 2018 przez marcinconn Obywatel (1,560 p.)

@jeremus, da się zrobić inne JOIN w select w from żeby osiągnąć połączenie wartości?

komentarz 19 grudnia 2018 przez jeremus Maniak (59,720 p.)

juz się pogubiłem :)

problemem jest pivot  - domyślnie sortuje alfabetycznie - nie wiem jak to zmienic 

tutaj jest cos o tym :

https://stackoverflow.com/questions/13755017/how-to-order-by-in-sql-pivot

 

ale tak porąbane ze nic nie rozumiem :)

 

 

 

Podobne pytania

0 głosów
1 odpowiedź 317 wizyt
pytanie zadane 20 stycznia 2020 w SQL, bazy danych przez Whistleroosh Maniak (56,980 p.)
0 głosów
0 odpowiedzi 810 wizyt
0 głosów
2 odpowiedzi 970 wizyt
pytanie zadane 5 października 2018 w SQL, bazy danych przez marekmarekmarek Nowicjusz (180 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...