phpmyadmin没有返回任何记录

时间:2012-01-27 19:39:31

标签: mysql phpmyadmin

我在phpmyadming中输入此查询时遇到一个奇怪的问题:

SELECT DISTINCT E.* FROM Events E, TICKET T WHERE ((E.idEvent=T.IDEvent  AND T.Email='david@fakesite.com')OR (E.email = 'david@fakesite.com')) AND E.dateEvent >= '2012-01-27 20:04:28' ORDER BY E.dateEvent ASC

我没有记录,没有发现错误或任何错误,好像我从未进行过查询。我强烈相信之前在phpmyadmin上运行的查询,但现在我似乎无法让它在本地或服务器中运行。两台不同的机器,本地我有MAMP和服务器linux。

最奇怪的是,如果查询是由php完成的,那么它会返回正确的值。

知道发生了什么事吗?

感谢。

1 个答案:

答案 0 :(得分:0)

对于初学者,如果T.email不等于'david@air-ticket.com.es',则您当前的查询可能会返回笛卡尔积。这是包含JOIN条件的WHERE的唯一部分。

您应该考虑明确说明您的JOIN和ON关键字(然后您的WHERE子句变得更容易理解):

SELECT DISTINCT E.*
FROM Events E
INNER JOIN TICKET T ON E.idEvent=T.IDEvent
WHERE (T.Email='david@air-ticket.com.es' OR E.email = 'david@myweb.com')
      AND E.dateEvent >= '2012-01-27 20:04:28' 
ORDER BY E.dateEvent ASC

并且Ticket和Events表都包含电子邮件字段吗?或者其中一个是类型o?

对于初学者,请尝试上述查询。