这是我的两张桌子。我不确定它们是否正确归一化:
all_configurator_lasers_power:
laser_id | power_id | laser_configuration
=========================================
1 10 1
1 25 1
1 20 2
1 50 2
2 10 1 ...
all_configurator_power_text:
power_id | power_level | laser_configuration | power_text
=========================================================
10 10 watts 1 10 watt text
25 25 watts 1 25 watt text
20 20 watts 2 20 watt text
50 50 watts 2 50 watt text
如果我在第一个表中提供laser_id,我想要的是第二个表的前两行。
这是我尝试过的(但没有用)
'SELECT * FROM all_configurator_power_text
INNER JOIN all_configurator_power_text
ON all_configurator_lasers_power.laser_configuration = all_configurator_power_text.laser_configuration'
这将返回如下数组:
Array (
[0] => stdClass Object
(
[id] => 1
[language] => en
[power_id] => 10
[power_level] => 10 watts
[laser_configuration] => 1
[power_text] => 10 watt text
[laser_id] => 1
)
...)
但是数组(CodeIgniter对象)也返回了laser_configuration为2的对象。我只想要那些带有1的对象。我添加了一个WHERE laser_configuration = 1
的WHERE子句,但后来我得到了一个非对象错误。
我做错了什么?
答案 0 :(得分:0)
您需要在laser_configuration
子句中指定要使用的表WHERE
。这样做,它应该与你写的条款一起使用。
所以你最终得到的结果是:
SELECT * FROM all_configurator_power_text
INNER JOIN all_configurator_lasers_power
ON all_configurator_lasers_power.laser_configuration = all_configurator_power_text.laser_configuration
WHERE all_configurator_lasers_power.laser_configuration = 1
另外,我建议添加一些速记引用以使其更具可读性。多年来,它可以在保持自己的理智方面发挥重要作用:
SELECT * FROM all_configurator_power_text text
INNER JOIN all_configurator_lasers_power lasers
ON lasers.laser_configuration = text.laser_configuration
WHERE lasers.laser_configuration = 1
答案 1 :(得分:0)
尝试添加以下内容:
WHERE all_configurator_lasers_power.power_id = 1
答案 2 :(得分:0)
您的表格结构存在一些潜在问题,但如果不了解您的具体要求,则很难说清楚。例如,您在每个表中都有power_id和laser_configuration。
你的where子句的可能问题是你需要指定你正在使用的两个表的laser_configuration中的哪一个。即:
WHERE all_configurator_lasers_power.power_id = 1
答案 3 :(得分:0)
SELECT *
FROM all_configurator_lasers_power
INNER JOIN all_configurator_power_text
ON all_configurator_lasers_power.laser_id = all_configurator_power_text.laser_configuration
WHERE all_configurator_lasers_power.laser_id = $id (in your case 1)