Witajcie, mam problem z zapytaniem niby prostym ale jednak nie mogę sobie z nim poradzić.
Opis Problemu:
- Aby user mógł wykonywać daną pracę musi posiadać odpowiednie kwalifikacje.
np. żeby być policjantem trzeba być: - nie karanym
-mieć zezwolenie na broń
Aby być Kucharzem trzeba umieć gotować oraz mieć badania sanitarne.
generalie aby zostać kimś tam trzeba spełnić wszystkie wymagania.
Struktura systemu jest taka:
Użytkownik est sprawdzany przez administratora.
Wprowadzane są jego kwalifikacje (tabela users_qualifications)
Dany użytkownik należy do określonej firmy (company w tabeli users)
w tabeli works mamy stanowiska pracy.
W tabeli works_qualifications mamy id danej pracy oraz wymagane kwalifikacje niezbędne do pełnienia danej pracy
(generalie może być n wymagań dotyczących danego stanowiska pracy)
w tabeli qualifications mamy kwalifikacje w naszym systemie ( czyli , nie karalosc , pozwolenie na broń , badania sanitarne, karta ratownika itd)
Problem jest następujący:
Podaję id firmy.
i muszę dostać wszystkie prace (works) które mogą być wykonywane przez ludzi z danej firmy.
i tu ważne. Jeśli dana firma ma dwóch pracowników
Jeden ma pozwolenie na broń ale jest karany (nie ma zaznaczone nie karalość)
a drugi jest nie karany ale nie ma pozwolenia na broń to wiadomo że z dwóch pracowników jednego policjanta nie będzie:)
Czyli aby w danej firmie możliwe było stanowisko Policjant musi się znaleŹć osoba (robocop)
która ma pozwolenie na broń i jest nie karana.
ogólnie na dane stanowisko może być n kwalifikacji niezbędnych do pełnienia danej pracy.
--
-- Database: `testowa`
--
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `qualifications`
--
CREATE TABLE IF NOT EXISTS `qualifications` (
`qualification_id` int(11) NOT NULL AUTO_INCREMENT,
`qualification_name` varchar(255) NOT NULL,
PRIMARY KEY (`qualification_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
--
-- Zrzut danych tabeli `qualifications`
--
INSERT INTO `qualifications` (`qualification_id`, `qualification_name`) VALUES
(1, 'Zezwolenie na bron'),
(2, 'Niekaralnosc'),
(3, 'Gotowanie'),
(4, 'Badania sanitarne');
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(50) NOT NULL,
`user_company` int(11) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
--
-- Zrzut danych tabeli `users`
--
INSERT INTO `users` (`user_id`, `user_name`, `user_company`) VALUES
(1, 'John Smith', 2),
(2, 'Sara Parker', 2),
(4, 'Andriej Xanow', 3),
(5, 'Robocop', 2);
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `users_qualifications`
--
CREATE TABLE IF NOT EXISTS `users_qualifications` (
`user_id` int(11) NOT NULL,
`qualification_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Zrzut danych tabeli `users_qualifications`
--
INSERT INTO `users_qualifications` (`user_id`, `qualification_id`) VALUES
(1, 1),
(2, 1),
(3, 1),
(3, 2),
(4, 1),
(4, 2),
(5, 1),
(5, 2);
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `works`
--
CREATE TABLE IF NOT EXISTS `works` (
`work_id` int(11) NOT NULL AUTO_INCREMENT,
`work_name` varchar(255) NOT NULL,
PRIMARY KEY (`work_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Zrzut danych tabeli `works`
--
INSERT INTO `works` (`work_id`, `work_name`) VALUES
(1, 'Policjant'),
(2, 'Kucharz');
-- --------------------------------------------------------
--
-- Struktura tabeli dla tabeli `works_qualifications`
--
CREATE TABLE IF NOT EXISTS `works_qualifications` (
`work_id` int(11) NOT NULL,
`qualification_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Zrzut danych tabeli `works_qualifications`
--
INSERT INTO `works_qualifications` (`work_id`, `qualification_id`) VALUES
(1, 1),
(1, 2),
(2, 3),
(2, 4);
Dzisiaj straciłem pół dnia pisząc rózne warianty zapytań ale jakoś nie udało mi się napisać odpowiedniego.
Proszę o podpowiedź jak coś takiego zorganizować. *zapytanie było z innymi tabelami jescze ale nie sa istotne w problemie a wiec ich nie umiszczam aby nie zaciemniac problemu.