assets_tbl (A)에서 모든 레코드를 선택해야합니다. author = "[email protected]"
또는 authorized_viewers
나는 이것이 내가 필요에 가까운 생각 "[email protected]"
3 개의 테이블에서 MySQL 다중 조인
을 포함하지만이 같은 레코드의 여러 행을 반환하는 경우 assets_tbl
에서 asset_id
에 연결되어 내가 (lightbox_name
을) 어떤 일러스트가 필요 이러한 기록에 포함 : 여기
SELECT
A.*,
C.lightbox_name,
C.author,
C.authorized_viewers
FROM
media_tbl A
LEFT JOIN lightbox_assets_tbl B ON A.asset_id = B.asset_id
LEFT JOIN lightboxes_tbl C
ON B.lightbox_id = C.id
AND C.author = "[email protected]"
LEFT JOIN lightboxes_tbl D ON D.authorized_viewers LIKE "[email protected]"
ORDER BY A.id DESC
이 테이블은 다음과 같습니다 여기
lightboxes_tbl
+-----+----------------+---------------+---------------------+
|id |lightbox_name |author |authoried_viewers |
+-----+----------------+---------------+---------------------+
|100 | aircraft-types |[email protected] |[email protected],[email protected] |
|101 | maintenance |[email protected] |[email protected] |
|102 | ramp |[email protected] |[email protected] |
+-----+----------------+---------------+---------------------+
lightbox_assets_tbl
+-----+-------------+-------------+---------------+----------+
|id |lightbox_id |asset_name |asset_path | asset_id |
+-----+-------------+-------------+---------------+----------+
|1 |100 |a321.jpg |project1/imgs/ | 3700 |
|2 |100 |b757.jpg |project1/imgs/ | 3444 |
|3 |101 |FlyBy.swf |project4/imgs/ | 1444 |
|4 |102 |Door_757.swf |project5/imgs/ | 3701 |
+-----+-------------+-------------+---------------+----------+
assets_tbl
+-----+---------------------+-------------------------------------+
|asset_id |asset_name | asset_location |
+-----------+---------------------+-------------------------------+
|3700 |a321.jpg |Libraries\Library_Media\Images |
|200 |757_Taxi.swf |Libraries\Library_Media\Images |
|3444 |b757.jpg |Libraries\Library_Media\Images |
|1444 |FlyBy.swf |Libraries\Library_Media\Images |
|3701 |Door_757.swf |Libraries\Library_Media\Images |
+----------+---------------------+--------------------------------+
이 기대된다 쿼리의 에드 결과 :
+-----------+---------------------+-------------------------------+------------------+-------------+------------------------+
|asset_id |asset_name | asset_location |lightbox_name | author | authorized_viewers |
+-----------+---------------------+-------------------------------+------------------+-------------+------------------------+
|3700 |a321.jpg |Libraries\Library_Media\Images |aircraft-types |[email protected] |[email protected],[email protected] |
+-----------+---------------------+-------------------------------+------------------+-------------+------------------------+
|200 |757_Taxi.swf |Libraries\Library_Media\Images |NULL |NULL |NULL |
+-----------+---------------------+-------------------------------+------------------+-------------+------------------------+
|3444 |b757.jpg |Libraries\Library_Media\Images |aircraft-types |[email protected] |[email protected],[email protected] |
+-----------+---------------------+-------------------------------+------------------+-------------+------------------------+
|1444 |FlyBy.swf |Libraries\Library_Media\Images |NULL |NULL |NULL |
+-----------+---------------------+-------------------------------+------------------+-------------+------------------------+
|3701 |Door_757.swf |Libraries\Library_Media\Images |ramp |[email protected]|[email protected] |
+----------+---------------------+--------------------------------+------------------+-------------+------------------------+
감사합니다!
의 함정을 피하기 - 이 조인의 'ON'조건에는 다른 테이블과 관련이 없으므로 카티 전 곱이됩니다. 그건'lightbox_assets_tbl.lightbox_id'에 합류해야합니다, 안돼요? –
적절한 DDL (및/또는 sqlfiddle)을 사용하면 upvote가 생길 수 있습니다. – Strawberry