2 개의 외래 키가있는 2 개의 테이블에서 선택

에르 할루 이온

질문이 있는데 이에 대한 해결책을 찾지 못했기 때문에 2 개의 테이블이 있습니다.

dosar
id      name     date      fk_user     fk_verificator   
1      dosar 1   08/08/14   1               2
users
id         name         is_admin         is_verificator
1         admin           Y                   N
2        verificator      N                   Y

fk_user는 사용자를 가리키는 외래 키이고, fk_verificator는 users 테이블을 가리키는 외래 키이기도합니다. 따라서 dosar에 대해 2 명의 사용자를 얻으려면 select를 만들어야합니다.

name           date           name            is_admin              is_verificator
dosar1       08/08/14         admin            Y                        N
                              verificator      N                        Y

내 질문 :

 $uid = (int) $this->uri->segment(3, 0);
    $this->load->database();
    $get_dosar = $this->db->query("SELECT * FROM dosar,users WHERE
                                    users.id = dosar.fk_user AND
                                    users.id = dosar.fk_verificator
                                    AND dosar.id_dosar = $uid");

사람들을 기쁘게 도와주세요.

브라이언 데 밀리아

이것은 최신 조인 구문을 사용합니다 (WHERE 절에 조인 조건을 넣지 않는 것이 좋습니다).

바이올린 : http://sqlfiddle.com/#!9/d6e60/2/0

select d.name, d.date, u.is_admin, u.is_verificator
  from dosar d
  join users u
    on u.id = d.fk_user
    or u.id = d.fk_verificator
 where d.id = $uid

출력 (dosar의 ID # 1) :

|    NAME |                          DATE | IS_ADMIN | IS_VERIFICATOR |
|---------|-------------------------------|----------|----------------|
| dosar 1 | August, 08 2014 00:00:00+0000 |        Y |              N |
| dosar 1 | August, 08 2014 00:00:00+0000 |        N |              Y |

이전 행과 동일한 NAME 또는 DATE의 값을 반복하지 않으려는 것 같습니다. 이는 SQL이 아닌 PHP로 수행되어야합니다.

항상 하나의 ID 만 선택하기 때문에 MySQL에서도 수행하는 것이 다소 간단합니다 (아래 참조).하지만 PHP에서 해당 부분을 수행하는 것이 좋습니다.

select case when rn = 1 then name end as name,
       case when rn = 1 then date end as date,
       is_admin,
       is_verificator
from(select d.name, d.date, u.is_admin, u.is_verificator, @rw := @rw + 1 as rn
      from dosar d
      join users u
        on u.id = d.fk_user
        or u.id = d.fk_verificator
      cross join (select @rw := 0) r
     where d.id = 1) x

산출:

|    NAME |                          DATE | IS_ADMIN | IS_VERIFICATOR |
|---------|-------------------------------|----------|----------------|
| dosar 1 | August, 08 2014 00:00:00+0000 |        Y |              N |
|  (null) |                        (null) |        N |              Y |

바이올린 : http://sqlfiddle.com/#!9/d6e60/3/0

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQL에서 2 개의 외래 키가있는 테이블에서 데이터 선택-잘못된 식별자

분류에서Dev

2 개의 테이블에서 값의 합계를 선택하고 공통 외래 키로 그룹화

분류에서Dev

"공유"키없이 2 개의 테이블에서 MySQL 선택

분류에서Dev

Laravel에서 외래 키가있는 2 개의 테이블에서 데이터를 반환하는 방법

분류에서Dev

Entity Framework Core-코드 우선-2 개의 외래 키-1 개의 테이블

분류에서Dev

기본 키와 2 개의 외래 키가있는 테이블 만들기

분류에서Dev

2 개의 테이블에서 일치하는 두 행 선택

분류에서Dev

2 개의 외래 키가있는 테이블 (캐스케이드)에서 행 제거

분류에서Dev

고유 테이블의 2 개 기본 키에서 오는 외래 키

분류에서Dev

단일 쿼리에서 두 개의 외래 키가있는 하나의 테이블에서 선택

분류에서Dev

이 쿼리가 가능합니까? 2 개의 테이블에서 선택

분류에서Dev

2 개의 테이블에서 데이터를 선택하는 MySQL

분류에서Dev

2 개의 테이블에서 데이터를 선택하는 MySQL

분류에서Dev

유사한 행이없는 2 개의 테이블에서 * 선택

분류에서Dev

2 개의 테이블에서 선택하려고하는 Crystal Reports

분류에서Dev

MySQL의 2 개 테이블에서 최대 값을 선택하는 방법

분류에서Dev

다른 테이블에 외래 키가있는 SQL의 2 테이블에서 삭제

분류에서Dev

2 개의 다른 테이블에서 2 개의 다른 열 선택

분류에서Dev

php / mysql. 2 개의 테이블에서 2 개의 공통 필드 선택

분류에서Dev

Django Rest Framework는 외래 키가 아닌 필드에서 2 개의 테이블을 조인합니다.

분류에서Dev

MYSQL : 동일한 테이블에서 두 개의 외래 키로 선택

분류에서Dev

2 개의 다른 테이블에서 데이터 선택

분류에서Dev

2 개의 테이블에서 데이터 선택

분류에서Dev

기본 테이블의 기본 키를 몰라도 외래 키 관계가있는 테이블에 2 개의 행 삽입

분류에서Dev

2 개의 테이블에서 SQL 쿼리. 선택 및 검색

분류에서Dev

단일 쿼리로 2 개의 테이블에서 선택

분류에서Dev

2 개의 다른 테이블에서 SQL 선택

분류에서Dev

SQL Server, 다른 테이블의 2 개 열에서 선택

분류에서Dev

SQL Server, 다른 테이블의 2 개 열에서 선택

Related 관련 기사

  1. 1

    SQL에서 2 개의 외래 키가있는 테이블에서 데이터 선택-잘못된 식별자

  2. 2

    2 개의 테이블에서 값의 합계를 선택하고 공통 외래 키로 그룹화

  3. 3

    "공유"키없이 2 개의 테이블에서 MySQL 선택

  4. 4

    Laravel에서 외래 키가있는 2 개의 테이블에서 데이터를 반환하는 방법

  5. 5

    Entity Framework Core-코드 우선-2 개의 외래 키-1 개의 테이블

  6. 6

    기본 키와 2 개의 외래 키가있는 테이블 만들기

  7. 7

    2 개의 테이블에서 일치하는 두 행 선택

  8. 8

    2 개의 외래 키가있는 테이블 (캐스케이드)에서 행 제거

  9. 9

    고유 테이블의 2 개 기본 키에서 오는 외래 키

  10. 10

    단일 쿼리에서 두 개의 외래 키가있는 하나의 테이블에서 선택

  11. 11

    이 쿼리가 가능합니까? 2 개의 테이블에서 선택

  12. 12

    2 개의 테이블에서 데이터를 선택하는 MySQL

  13. 13

    2 개의 테이블에서 데이터를 선택하는 MySQL

  14. 14

    유사한 행이없는 2 개의 테이블에서 * 선택

  15. 15

    2 개의 테이블에서 선택하려고하는 Crystal Reports

  16. 16

    MySQL의 2 개 테이블에서 최대 값을 선택하는 방법

  17. 17

    다른 테이블에 외래 키가있는 SQL의 2 테이블에서 삭제

  18. 18

    2 개의 다른 테이블에서 2 개의 다른 열 선택

  19. 19

    php / mysql. 2 개의 테이블에서 2 개의 공통 필드 선택

  20. 20

    Django Rest Framework는 외래 키가 아닌 필드에서 2 개의 테이블을 조인합니다.

  21. 21

    MYSQL : 동일한 테이블에서 두 개의 외래 키로 선택

  22. 22

    2 개의 다른 테이블에서 데이터 선택

  23. 23

    2 개의 테이블에서 데이터 선택

  24. 24

    기본 테이블의 기본 키를 몰라도 외래 키 관계가있는 테이블에 2 개의 행 삽입

  25. 25

    2 개의 테이블에서 SQL 쿼리. 선택 및 검색

  26. 26

    단일 쿼리로 2 개의 테이블에서 선택

  27. 27

    2 개의 다른 테이블에서 SQL 선택

  28. 28

    SQL Server, 다른 테이블의 2 개 열에서 선택

  29. 29

    SQL Server, 다른 테이블의 2 개 열에서 선택

뜨겁다태그

보관