循环匹配.PHP/MySql

7 php mysql

嗨,我需要一些帮助与PHP中的以下场景.我有一个db用户,每个用户都有ID,have_card和want_card.我知道如何进行直接匹配(一个用户与另一个用户进行交易).但如果没有直接匹配,但有一个循环交换,如:

用户#1有卡A想要卡B.

用户#2有卡B想要卡C.

用户#3有卡C想要卡A.

在这种情况下,两个用户之间没有直接匹配.但如果:

用户#1将他的卡片给用户#3

用户#3将他的卡片给用户#2

用户#2将他的卡片给用户#1

每个人都快乐.

我必须从用户#1开始的所有信息如何找到用户#2和用户#3?

感谢大家的回答.

jer*_*ear 0

这是一个具有挑战性的场景。不久前,我必须为书籍交换应用程序构建这个应用程序,并使用白板,我能够更轻松地直观地看到并解决问题。

我所做的是在查询中多次使用同一个表,只是使用不同的名称。

在我的场景中,所需的书籍与用户拥有的书籍位于单独的表中。希望您能够看到此查询中的逻辑:

$query = "SELECT 
        A.Owner_ID as Owner_1, C.Owner_ID as Owner_2, E.Owner_ID as Owner_3 
    FROM
        E_User_Books_Have as A, E_User_Books_Have as C, E_User_Books_Have as E,
        E_User_Books_Needed as B, E_User_Books_Needed as D,E_User_Books_Needed as F

    WHERE 
        A.Book_ID=D.Book_ID AND
        C.Book_ID=F.Book_ID AND
        E.Book_ID=B.Book_ID AND 
        A.Owner_ID='$ME' AND B.Owner_ID='$ME' AND A.ID='$ID'AND 
        C.Owner_ID=D.Owner_ID AND  
        E.Owner_ID=F.Owner_ID AND
        C.Owner_ID!='$ME' AND
        E.Owner_ID!='$ME'";
Run Code Online (Sandbox Code Playgroud)