Два очень похожих запроса, которые возвращают другой результат, почему? - PullRequest
1 голос
/ 13 февраля 2012

Я схожу с ума от этих 2 запросов, я не могу объяснить, почему один возвращает 81 строку, а другой 0. Может ли кто-нибудь помочь мне с этим?

-- Working
SELECT * FROM
boat_standard_specification_items AS BoatStandardSpecificationItem JOIN standard_specification_items AS StandardSpecificationItem
ON(BoatStandardSpecificationItem.standard_specification_item_id = StandardSpecificationItem .id)

-- Not working
SELECT * FROM
`boat_standard_specification_items` AS `BoatStandardSpecificationItem` JOIN `standard_specification_items` AS `StandardSpecificationItem`
ON (`BoatStandardSpecificationItem`.`standard_specification_item_id` = 'StandardSpecificationItem.id')

Я работаю в операционной системе Windows, если могу помочь

Ответы [ 5 ]

3 голосов
/ 13 февраля 2012

Это не один и тот же запрос. На втором у вас есть:

ON (`BoatStandardSpecificationItem`.`standard_specification_item_id` = 'StandardSpecificationItem.id')
                                                                       ^---

Обратите внимание, что изменение в кавычках. Одиночные кавычки определяют STRING в запросе, поэтому вы не сравниваете два поля, вы сравниваете поле со строкой.

1 голос
/ 13 февраля 2012

Во втором запросе

`BoatStandardSpecificationItem`.`standard_specification_item_id` = 'StandardSpecificationItem.id'

вы сравниваете BoatStandardSpecificationItem. standard_specification_item_id со строкой 'StandardSpecificationItem.id'

В первом запросе

SELECT * FROM
boat_standard_specification_items AS BoatStandardSpecificationItem JOIN standard_specification_items AS StandardSpecificationItem
ON(BoatStandardSpecificationItem.standard_specification_item_id = StandardSpecificationItem .id)

вы сравниваете BoatStandardSpecificationItem. standard_specification_item_id с другим столбцом StandardSpecificationItem .id

Совершенно очевидно, что они возвращают разные результаты

1 голос
/ 13 февраля 2012

Вы не можете поместить имена таблиц в одинарные кавычки. Используйте [и], если вы хотите поместить что-то вокруг них, чтобы сделать его читабельным.

0 голосов
/ 13 февраля 2012

Это разные запросы. В секунду вы пытаетесь сопоставить поле со строкой, которая вам может не понадобиться.

(`BoatStandardSpecificationItem`.`standard_specification_item_id` = 'StandardSpecificationItem.id')

вы можете узнать больше о Присоединиться

0 голосов
/ 13 февраля 2012

Похоже, что тот, который "не работает", использует буквальную строку для присоединения (обратите внимание на одинарные кавычки). Остальная часть вашего запроса использует обратные галочки, поэтому попробуйте один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...