Php MySQL选择匹配的ID,输出到json

Php MySQL选择匹配的ID,输出到json,php,mysql,sql,json,Php,Mysql,Sql,Json,我在用户生成内容的可视化显示上使用d3js。正在显示的数据通过标准的三个表从数据库中提取:条目、条目标记、条目标记查找表。我的d3js代码需要JSON输出才能工作。我正确地编码了PHP到JSON的输出,但是我很难弄清楚需要编写什么查询来获取正确的ID 条目表(创建思想) 标签表(想法和标签) 查找表(思想标记) PHP到JSON代码(功能) 我的问题是链接(源/目标)都不正确。我需要源是think_id,目标是所有think_id和匹配的tag_id。我尝试过摆弄来自的一些解决方案,但它们不是我

我在用户生成内容的可视化显示上使用d3js。正在显示的数据通过标准的三个表从数据库中提取:条目、条目标记、条目标记查找表。我的d3js代码需要JSON输出才能工作。我正确地编码了PHP到JSON的输出,但是我很难弄清楚需要编写什么查询来获取正确的ID

条目表(创建思想)

标签表(想法和标签)

查找表(思想标记)

PHP到JSON代码(功能)

我的问题是链接(源/目标)都不正确。我需要源是think_id,目标是所有think_id和匹配的tag_id。我尝试过摆弄来自的一些解决方案,但它们不是我所需要的

下面是我得到的最接近的,但我不确定如何用源和目标格式化它;它只是用一个匹配的标签(55)来拉思想id

编辑:提出了这个,看起来更接近,但格式不正确。我需要基于匹配标记列出的思想ID,但不需要其他

SELECT DISTINCT t1.*
FROM thoughts_tagged t1
INNER JOIN thoughts_tagged t2
ON t1.tag_id = t2.tag_id AND t1.thought_id <> t2.thought_id
选择DISTINCT t1*
从思想上
内部连接思想\u标记t2
在t1.tag_id=t2.tag_id和t1.think_id t2.think_id上

感谢您的帮助

这是我认识的一位开发人员能够给出的答案。它工作得很好。:)

选择DISTINCT
t1.id作为源,
t2.作为目标的思想
从思想上
内连接
思想(t2)
在t1.tag_id=t2.tag_id和t1.think_id t2.think_id上

我不太明白你的问题,但我认为这是关于sql的。因此,请尝试此
从条目中选择E.*,T.*.L.*作为E内部连接查找E.id=L上的L。尽管T.tag上的T是内部连接标记,但T.tag=L.tag\id中的L.tag\u id=55
非常感谢。这确实有效,但它的工作原理与我以前的SQL相同,只从具有55作为标记的条目(而不是仅条目ID)中提取所有数据。如果任何一个查询都能工作,我不确定现在如何将其格式化为PHP,以便一个是源,另一个是PHP文件中的目标。非常感谢。这个查询提取了所有具有相似标记ID的Think_ID,但我不确定如何将其集成到上面的代码中。有什么想法吗<代码>选择不同的t1.*从思想标记的t1内部连接思想标记的t2在t1.tag\u id=t2.tag\u id和t1.think\u id t2.think\u id
tag_id | tag_name
tagged_id | tag_id | thought_id
$titlequery = "
SELECT  `thought_title` FROM  `create_thought`
";
//THE BELOW QUERY IS INCORRECT
$tagquery = "
SELECT  `tag_id` AS `source`, `thought_id` AS `target` FROM  `thoughts_tagged`
";
$query1 = mysql_query($titlequery);

if ( ! $query1 ) {
echo mysql_error();
die;
}
$query2 = mysql_query($tagquery);

if ( ! $query2 ) {
echo mysql_error();
die;
}

$datatitle = array();

for ($x = 0; $x < mysql_num_rows($query1); $x++) {
$datatitle[] = mysql_fetch_assoc($query1);
}

$datatag = array();

for ($y = 0; $y < mysql_num_rows($query2); $y++) {
$datatag[] = mysql_fetch_assoc($query2);
}

echo '{
"nodes":' . json_encode($datatitle) . ',"links":' . json_encode($datatag) . '}';     
{ "nodes":[{"thought_title":"Title1"},{"thought_title":"Title2"}],"links":[{"source":"1","target":"8"},{"source":"2","target":"8"},{"source":"2","target":"17"}]}
SELECT id
FROM   create_thought
WHERE  EXISTS (SELECT * FROM thoughts_tagged
WHERE  thought_id = id AND tag_id = 55)
SELECT DISTINCT t1.*
FROM thoughts_tagged t1
INNER JOIN thoughts_tagged t2
ON t1.tag_id = t2.tag_id AND t1.thought_id <> t2.thought_id
SELECT DISTINCT
t1.thought_id as source,
t2.thought_id as target
FROM thoughts_tagged t1
INNER JOIN
thoughts_tagged t2
ON t1.tag_id = t2.tag_id AND t1.thought_id <> t2.thought_id