1
일부 테이블의 일부 열을 갖고 싶습니다. 사용자에게 문제가 있습니다. userId
은 0 일 수 있지만 null
으로 반환해야합니다. 나는이 간단한 조합 문을 수행 할 때, 그 결과는 다음과 같습니다select union SQL 문의 문제
SELECT
a.appointmentId,
u.prename AS user_prename,
u.lastname AS user_lastname,
a.start AS START ,
a.end AS END ,
w.workerId AS workerid
FROM ios_appointments a
JOIN ios_user u
JOIN ios_worker w
JOIN ios_partners p
WHERE a.workerid_fk = w.workerid
AND w.partnerid_fk = p.partnerid
AND a.userid_fk = u.userid
AND p.code = 'DEMO6003'
union
select
a.appointmentId,
null,
null,
a.start AS START ,
a.end AS END ,
w.workerId AS workerid
from ios_appointments a
JOIN ios_user u
JOIN ios_worker w
JOIN ios_partners p
where
a.userid_fk = 0;
예상 결과 :
이43 NULL NULL 2013-01-10 02:00:00 2013-01-10 02:30:00 3
실제 결과 :
이43 NULL NULL 2013-01-10 02:00:00 2013-01-10 02:30:00 1
43 NULL NULL 2013-01-10 02:00:00 2013-01-10 02:30:00 2
43 NULL NULL 2013-01-10 02:00:00 2013-01-10 02:30:00 3
문제가 : 이 문은 반환을 데이터베이스에 등록 된 각 작업자에 대한 행. 어떻게 해결할 수 있습니까?
테이블 스키마
이CREATE TABLE `ios_workinghours` (
`workingHourId` int(11) NOT NULL AUTO_INCREMENT,
`start` time DEFAULT NULL,
`end` time DEFAULT NULL,
`workerid_fk` int(11) NOT NULL,
PRIMARY KEY (`workingHourId`),
KEY `workerid_fk` (`workerid_fk`)
)
create table ios_worker (
workerid int not null auto_increment,
prename varchar(255),
lastname varchar(255),
avatar varchar(255),
lineup varchar(255),
languages varchar(255),
partnerid_fk int not null,
primary key(workerid),
foreign key(partnerid_fk) references ios_partners(partnerid)
)
create table ios_user (
userid int not null auto_increment,
prename varchar(255),
lastname varchar(255),
phone varchar(255),
email varchar(255),
password varchar(255),
primary key (userid)
)
create table ios_partners (
partnerid int not null auto_increment,
code varchar(255),
partnerName varchar(255),
street varchar(255),
zipCode varchar(255),
city varchar(255),
languages varchar(255),
workers varchar(255),
lineup varchar(255),
primary key(partnerid)
)
당신이 관련 테이블 스키마 – Kermit
을 게시하는 경우 여러 ios_worker 기록이있는 경우 그런 다음, 도움이 될 것입니다 이것은 예상되는 동작입니다. MAX를 반환하려고하십니까? – sgeddes
당신의 기대는 거짓이다. 일대 다 시나리오를 가지고 있더라도 "유니언"과의 고유성을 강요합니다. p.code가 'DEMO6003'이고 레코드가 userid_fk가 0 인 레코드를 가져 오는 경우 세 개의 별개 workerID가 있습니다. 이 경우가되어야합니다. 어떻게하면 더 잘할 수 있는지 알기 위해서 우리가이 일을하는 이유에 대해 더 많이 알 필요가 있습니다. @njk이 말했듯이, 테이블 스키마를 알고 있습니다. –