开发者

MySql 'Select' help

开发者 https://www.devze.com 2022-12-21 12:36 出处:网络
I have some tables. These tables all have one column in common called \'classified_id\': main_table:cars_table:

I have some tables.

These tables all have one column in common called 'classified_id':

   main_table:            cars_table:            
    id (PK) => 4222        id (PK)  => 1021             
  classified_id => 25   classified_id => 25

Now, I want whenever a search is performed, to compare if any of the main_table.classified_id matches any of the cars_table.classified_id (in this case).

the cars_table may return no matches! the classified_id in every table is the only relation. I would never need to compare the cars_table.classified_id to main_table.classifie开发者_如何学运维d_id, but the other way around is what I need (main_table.classified_id=cars_table.classified_id).

I don't know what type of Join to use... Any help? Left Join?

Thanks


Yes, it is a left join

Something like

SELECT  *
FROM    main_table mt LEFT JOIN
        cars_table ct ON mt.classified_id = ct.classified_id


SELECT * FROM main_table LEFT JOIN cars_table ON main_table.classified_id = cars_table.classified_id

Will return 1-?? copies of main_table rows depending on how many in cars_table that matches. If there is no match all values from cars_table will be NULL


I'm not quite sure what you're asking, but assuming you're looking for all the records in main_table that match some condition, and you'd like to bring along any records in the cars_table that have the same classified_id as any of the matching records in the main table, even if there are no such records in the cars_table, you should be using left join like so:

SELECT *
FROM main_table AS M
  LEFT JOIN cars_table as C
    ON C.classified_id = M.classified_id
WHERE
  f(M.foo)

When there is an M record such that f(M.foo) evaluates to TRUE, but no corresponding C record, the M record will still appear in the result set, but all the C fields will be NULL.

A more thorough explanation of left outer joins (same thing as a left join) can be found here:

http://en.wikipedia.org/wiki/Left_outer_join#Sample_tables

You'll need to look at the sample data to make sense of the example they give for left outer join:

http://en.wikipedia.org/wiki/Left_outer_join#Sample_tables

0

精彩评论

暂无评论...
验证码 换一张
取 消