2011-09-15 49 views
1

我有一个MySQL查询,看起来像这样:MYSQL:查询只处理一个值?

$query = "SELECT * FROM users 
      JOIN signup ON users.uid = signup.uid 
      JOIN jobs ON users.category_id = jobs.id 
      JOIN lclasses ON users.class = lclasses.class_id 
      JOIN degrees ON users.degree_id = degrees.degree_id 
      JOIN trades ON users.trade_id = trades.trade_id 
      JOIN tradestatuses ON users.trade_status = tradestatuses.status_id 
      WHERE users.uid='{$id}' LIMIT 1"; 

如果$ ID = 8,那么我的查询将返回正常。如果我尝试使用其他数据库中的其他标识,则会得到一个空的结果集。

我在phpMyAdmin中测试了查询并获得了相同的结果。当我使用不同的数字时,在查询中没有错误,只是一个空的结果集,但我可以在浏览部分查看右边的行。我的表损坏了吗?任何人都有类似的事情发生在他们身上?

+0

ID是直线上升的数字1,2,3,4,5,6,7,8,9,10,11等... – ReX357

+1

任何表中是否有空值? 'JOIN'是一个内部连接,所以null可以把事情搞砸。 – waiwai933

+1

将您的JOIN更改为LEFT JOIN并在输出中查找意外的NULL。 –

回答

2

空的结果集是空的结果集。

因为都是INNER连接,的任何一个加入可能是“链接到无”(以及由此导致的结果为空)。没有仔细检查数据就不可能说更多。我会考虑将查询分解为多个部分,以查看哪部分“不起作用”。

快乐编码。距离穆文的评论


有用的建议:

更改您的连接来LEFT JOIN的,并期待在输出意外NULL值。

+0

我确实有一个空联接,谢谢! – ReX357

0

问题可能出在查询逻辑上。要检查它,请提供表格的描述和预期结果。找到错误的一个好的实际方法是评论其他连接。 从

SELECT * 
FROM users 
WHERE users.uid='{$id}' 
LIMIT 1 

开始,然后添加发现加入的削减记录