테이블이 2 개 있습니다. 하나는 'page_links'이고 다른 하나는 'rpp'입니다. 테이블 page_links는 테이블 rpp의 상위 집합입니다.(mySQL) 데이터에 대해 2 개의 테이블을 올바르게 쿼리 할 수 없습니다.
다음 내 테이블의 스키마입니다 :
내가 뭘하려고 오전-- Table structure for table `page_links`
--
CREATE TABLE IF NOT EXISTS `page_links` (
`page` varchar(255) NOT NULL,
`page_link` varchar(100) NOT NULL,
`heading_id` tinyint(3) unsigned NOT NULL,
PRIMARY KEY (`page`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `page_links`
--
INSERT INTO `page_links` (`page`, `page_link`, `heading_id`) VALUES
('a1.php', 'A1', 8),
('b1.php', 'B1', 8),
('c1.php', 'C1', 5),
('d1.php', 'D1', 5),
('e1.php', 'E1', 8),
('f1.php', 'F1', 8),
('g1.php', 'G1', 8),
('h1.php', 'H1', 1),
('i1.php', 'I1', 1),
('j1.php', 'J1', 8),
('k1.php', 'K1', 8),
('l1.php', 'L1', 8),
('m1.php', 'M1', 8),
('n1.php', 'N1', 8),
('o1.php', 'O1', 8),
('p1.php', 'P1', 4),
('q1.php', 'Q1', 5),
('r1.php', 'R1', 4);
-- Table structure for table `rpp`
--
CREATE TABLE IF NOT EXISTS `rpp` (
`role_id` tinyint(3) unsigned NOT NULL,
`page` varchar(255) NOT NULL,
`is_allowed` tinyint(1) NOT NULL,
PRIMARY KEY (`role_id`,`page`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `rpp`
--
INSERT INTO `rpp` (`role_id`, `page`, `is_allowed`) VALUES
(3, 'a1.php', 1),
(3, 'b1.php', 1),
(3, 'c1.php', 1),
(3, 'd1.php', 1),
(3, 'e1.php', 1),
(3, 'f1.php', 1),
(3, 'h1.php', 1),
(3, 'i1.php', 1),
(3, 'l1.php', 1),
(3, 'm1.php', 1),
(3, 'n1.php', 1),
(4, 'a1.php', 1),
(4, 'b1.php', 1),
(4, 'q1.php', 1),
(5, 'r1.php', 1);
:
을 내가 (단일 쿼리에서) 위의 두 테이블을 조회하는 것을 시도하고있다 page_links의 모든 페이지가 특정 역할에 대한 rpp의 is_allowed 값과 함께 표시됩니다. 예를 들어, role_id = 3에 대한 모든 페이지의 is_allowed 값을 rpp에서 가져오고 동시에 page_links에서 사용 가능한 모든 페이지를 나열하려고합니다. 내 예상 결과의 명확한 예는 다음과 같습니다
내 원하는 결과의 또 하나의 예는 좌 page_links.page = rpp.page ON RPP 가입하세요 수행하여 달성하지만 할 수page is_allowed role_id
----------------------------------------
a1.php 1 3
b1.php 1 3
c1.php 1 3
d1.php 1 3
e1.php 1 3
f1.php 1 3
g1.php NULL NULL
h1.php 1 3
i1.php 1 3
j1.php NULL NULL
k1.php NULL NULL
l1.php 1 3
m1.php 1 3
n1.php 1 3
o1.php NULL NULL
p1.php NULL NULL
q1.php NULL NULL
r1.php NULL NULL
우리가 ROLE_ID = 3 사용하여 생략 할 필요가 (또는 어떤 가치든지) 그것을 얻을 수 있습니다. 그러나 나는 role_id도 지정하고 결과를 얻고 싶습니다. 이 결과를 얻으려면 쿼리가 필요합니다. 나는 이것으로 나를 도울 수있는 어떤 대답이라도 감사 할 것이다. 원하는 결과를 얻을 수 있도록 테이블 변경 사항을 제안 할 수 있다면 좋을 것입니다. 미리 감사드립니다.
+1 작성 스크립트, 테스트 데이터 및 예상 출력을 제공합니다. 내가 더 줄 수 있으면 좋겠어. –
@ 마크, 감사합니다. 나는 당신의 대답도 받아 들일 수 있었으면 좋겠지 만 그것은 나를 용납하지 않을 것입니다. 어쩌면 다음 번에 .. :) – Devner