簡體   English   中英

MySQL內部聯接返回重復結果

[英]Mysql inner join returning repeated results

我正在嘗試從mysql數據庫中提取字符。 字符表有6列,可鏈接到項目表中的外部項目ID,我需要鏈接每個項目以獲取項目ID,名稱和外部圖像ID,然后我需要將該前例圖像ID鏈接到我的圖像表。 並提取圖片網址。 我在下面編碼的代碼做到了這一點,這給了我重復的圖像URL。 有誰知道這是怎么回事?

這是我的結果。 圖片網址在重復自己。 我帶了project_users進行測試,同樣的事情發生了,現在不使用它,但是將來會使用。

我做了一個sqlfiddle,但是看起來它在這里工作正常http://sqlfiddle.com/#!2/7896e/8

    Array ( [name] => test1241 [0] => test1241 [gender] => [1] => [left_arm] => Images/Items/leftArm.png [2] =>
 Images/Items/leftArm.png [legs] => Images/Items/legs.png [3] => Images/Items/legs.png [torso] => 
Images/Items/torso.png [4] => Images/Items/torso.png [head] => Images/Items/head.png [5] => Images/Items/head.png [hair] => Images/Items/hair.png [6] => Images/Items/hair.png [right_arm] => Images/Items/rightArm.png [7] => Images/Items/rightArm.png )

   $sql = "SELECT
            pc.project_characters_name as name,
            pc.project_characters_gender as gender,
            pia1.project_images_url as left_arm,
            pia2.project_images_url as legs,
            pia3.project_images_url as torso,
            pia4.project_images_url as head,
            pia5.project_images_url as hair,
            pia6.project_images_url as right_arm

            FROM project_characters AS pc
            INNER JOIN project_users AS pu ON pc.fk_project_users_id = pu.project_users_id
            INNER JOIN project_items AS pi1 ON pc.project_characters_left_arm = pi1.project_items_id
            INNER JOIN project_items AS pi2 ON pc.project_characters_legs = pi2.project_items_id
            INNER JOIN project_items AS pi3 ON pc.project_characters_torso = pi3.project_items_id
            INNER JOIN project_items AS pi4 ON pc.project_characters_head = pi4.project_items_id
            INNER JOIN project_items AS pi5 ON pc.project_characters_hair = pi5.project_items_id
            INNER JOIN project_items AS pi6 ON pc.project_characters_right_arm = pi6.project_items_id
            INNER JOIN project_images AS pia1 ON pi1.fk_project_images_id = pia1.project_images_id
            INNER JOIN project_images AS pia2 ON pi2.fk_project_images_id = pia2.project_images_id
            INNER JOIN project_images AS pia3 ON pi3.fk_project_images_id = pia3.project_images_id
            INNER JOIN project_images AS pia4 ON pi4.fk_project_images_id = pia4.project_images_id
            INNER JOIN project_images AS pia5 ON pi5.fk_project_images_id = pia5.project_images_id
            INNER JOIN project_images AS pia6 ON pi6.fk_project_images_id = pia6.project_images_id
            WHERE pc.project_characters_name=:name LIMIT 1";

您可以嘗試使用關鍵字DISTINCT僅選擇不同的結果。

范例:

SELECT DISTINCT yourField FROM tables;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM