Reputation: 11689
I'm going mad with this 2 queries, I can't explain myself why one returns 81 rows and the other 0. Can someone help me with this?
-- 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')
I'm on Windows OS if can be helpful in any way
Upvotes: 1
Views: 71
Reputation: 2795
In the second query
`BoatStandardSpecificationItem`.`standard_specification_item_id` = 'StandardSpecificationItem.id'
you are comparing BoatStandardSpecificationItem
.standard_specification_item_id
with a string 'StandardSpecificationItem.id'
In the first query
SELECT * FROM
boat_standard_specification_items AS BoatStandardSpecificationItem JOIN standard_specification_items AS StandardSpecificationItem
ON(BoatStandardSpecificationItem.standard_specification_item_id = StandardSpecificationItem .id)
you are comparing BoatStandardSpecificationItem
.standard_specification_item_id
with another column StandardSpecificationItem .id
It is so obvious they return different results
Upvotes: 1
Reputation: 8530
They are different queries .In second you are trying to match field to a String which you might not want.
(`BoatStandardSpecificationItem`.`standard_specification_item_id` = 'StandardSpecificationItem.id')
you may learn more about Join
Upvotes: 0
Reputation: 1007
You can't put the table names inside single quotes. Use [ and ] if you want to put something around them in order to make it readable.
Upvotes: 1
Reputation: 57748
It looks like the one that's "not working" is using a literal string to JOIN on (note the single quotes). The rest of your query is using back-ticks, so try that once.
Upvotes: 0
Reputation: 360632
They're not the same query. On the second one, you have:
ON (`BoatStandardSpecificationItem`.`standard_specification_item_id` = 'StandardSpecificationItem.id')
^---
Note that change in quotes. Single quotes define a STRING in a query, so you're not comparing two fields, you're comparing a field against a string.
Upvotes: 3