0

1つのフィールドに含まれるコンマ区切りのキーに基づいて2つのテーブルを結合したいと思います。したがって、2つのテーブルは「topic」と「link」であり、topicには「links」フィールドが含まれています。このフィールドには、テーブルリンク内のレコードのコンマ区切りのIDが含まれています。これは可能ですか?

4

2 に答える 2

3

質問についてもっと説明する必要がありますが(テーブル定義、サンプルデータ、必要な出力があると便利です)、@ AaronBertrandは、コンマ区切りのリストでテーブルを結合する方法について、今日の初めにこれを示しました。

SELECT DISTINCT T.Id, L.Link 
FROM Topic T
   JOIN Link L ON CONCAT(',',T.Links,',') LIKE CONCAT('%', L.Link,'%')

例として使用するいくつかの要約SQLフィドルを次に示します。

幸運を。

于 2013-01-31T06:57:20.927 に答える
0

これをありがとう。もう少し調べた後、トピックIDとリンクIDの個別のフィールドを含むtopic_lnksという3番目のテーブルを作成することにしました。これにより、結合の処理がはるかに簡単になります。私の場合、私は以下を使用します:

if(isset($_POST['submit'])){

        $query = "INSERT INTO topic (topic_pk,title,topic,majors,sub_discipline_fk,author_fk,created)
          VALUES ('','$title','$topic','$majors_string','$sub_discipline','$author_pk',NOW())";
        $result = mysql_query($query, $connection) or die(mysql_error());
        if($result){
            $topic_pk = mysql_insert_id();
        }

        foreach($links as $link){
                    $query_links = "INSERT INTO topic_links (topic_link_pk,topic_fk,link_fk)
          VALUES ('','$topic_pk','$link')";
        $result_links = mysql_query($query_links, $connection) or die(mysql_error());
        }
        if($result_links){
            $message = "- The topic '" . $title . "' has been created";
        }
}

次に、フィールド'topic_fk'に基づいてリンクを取得するtopic_linksテーブルをクエリできます。

于 2013-01-31T07:09:29.830 に答える