我的联合工作是这样的:
patches-own[
price
]
to setup
clear-all
ask patches [
set price 0.1
]
reset-ticks
end
to go
ask patches [
set price (sin ticks) + price
]
tick
end
但是,这仅显示在通道和SELECT *
FROM fixtures f,
channel c,
fixture_channel_join fcj
WHERE f.matchday = '1'
AND f.fixtures_id = fcj.fixture_id
AND fcj.channel_id = c.id
中包含数据的行。是否可以显示来自灯具的所有数据,如果没有连接,只显示列中的空数据?
由于
答案 0 :(得分:1)
使用#if (DEBUG_LEVEL > 0)
printf("ITER %d\n", iter);
#endif
left join
答案 1 :(得分:1)
尝试使用LEFT OUTER JOIN。
SELECT *
FROM fixtures f
LEFT OUTER JOIN fixture_channel_join fcj ON f.fixtures_id =fcj.fixture_id
LEFT OUTER JOIN channel c ON fcj.channel_id = c.id
WHERE f.matchday = '1'
答案 2 :(得分:1)
你所做的是隐式联接,即INNER JOIN
。它很难阅读,有点混乱,我建议不要这样做。
您正在寻找LEFT JOIN
或RIGHT JOIN
。
LEFT JOIN
为您提供左侧的所有值,并在结果的右侧填充NULL
:
SELECT *
FROM fixtures f,
LEFT JOIN fixture_channel fcj ON f.fixtures_id = fcj.fixture_id
LEFT JOIN channel c ON fcj.channel_id = c.id
WHERE f.matchday = '1'
这将为您提供fixtures
表中的所有值(包括那些不匹配的值),然后是fixture_channel
表格中的匹配值(NULL
存在没有匹配项的值),后跟channe
l表中的匹配值(NULL
值,其中不存在匹配项。)
或者,RIGHT JOIN
将为您提供右侧的所有值,并在左侧填充NULL
:
SELECT *
FROM fixtures f,
RIGHT JOIN fixture_channel fcj ON f.fixtures_id = fcj.fixture_id
RIGHT JOIN channel c ON fcj.channel_id = c.id
WHERE f.matchday = '1'
这将为您提供channel
表中的所有值(包括那些不匹配的值),前面是fixture_channel
表中的值(NULL
值表示那些值不匹配任何频道),前面是fixture
表格中的值(夹具值不匹配灯具的NULL
值)。向后退一步说明它是从右到左。
有关加入here的更多信息,请附上插图:)