[英]PHP mysql how to join two tables to link name from one table and post from other table
[英]How to join two tables with multiple IDs from one table used in other table?
我需要tableA
兩個表tableA
和tableB
,但是問題是在tableB
我有來自tableA
兩個ID ,因此我需要將它們tableA
起來,以便同時獲得兩個值。 我想使用Codeigniter的活動記錄類來實現它。 這是一個小演示:
tableA:
╔══════════╦════════════╗
║ video_id ║ video_name ║
╠══════════╬════════════╣
║ 1 ║ short ║
║ 2 ║ long ║
║ 3 ║ black ║
║ 4 ║ white ║
╚══════════╩════════════╝
tableB
╔═════════╦════════╦════════╗
║ pair_id ║ pair_a ║ pair_b ║
╠═════════╬════════╬════════╣
║ 1 ║ 1 ║ 2 ║
║ 2 ║ 1 ║ 4 ║
║ 3 ║ 4 ║ 3 ║
║ 4 ║ 3 ║ 2 ║
╚═════════╩════════╩════════╝
這不起作用:
$this->db->select('*')
->from("tableA")
->join('tableB AS A', 'tableA.video_id = A.pair_a')
->select("tableA.video_name as VIDEO_A")
->join('tableB AS B', 'tableA.video_id = B.pair_b')
->select("tableA.video_name as VIDEO_B")
->get()
->result();
最終結果需要是這樣的:
stdClass Object
(
[0] => stdClass Object
(
[VIDEO_A] => short
[VIDEO_B] => long
)
[1] => stdClass Object
(
[VIDEO_A] => short
[VIDEO_B] => white
)
[2] => stdClass Object
(
[VIDEO_A] => white
[VIDEO_B] => black
)
[3] => stdClass Object
(
[VIDEO_A] => black
[VIDEO_B] => long
)
)
您在查詢中混合了tableA和tableB。 對於B中的每個項目,您都想要一些東西,所以從那里開始加入。 然后,加入重命名的表,並從重命名的表中選擇項目。
->from("tableB")
->join('tableA AS pairA', 'pairA.video_id = tableB.pair_a')
->join('tableA AS pairB', 'pairB.video_id = tableB.pair_b')
->select("pairA.video_name as VIDEO_A, pairB.video_name as VIDEO_B")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.