MySql «Выбрать» помощь - PullRequest
       6

MySql «Выбрать» помощь

1 голос
/ 02 марта 2010

У меня есть несколько таблиц.

У всех этих таблиц есть один общий столбец с именем «lass_id »:

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

Теперь я хочу, чтобы всякий раз, когда выполнялся поиск, сравнивался ли какой-либо из main_table.classified_id с любым из cars_table.classified_id (в данном случае).

cars_table может не возвращать совпадений! классификатор_идентификатора в каждой таблице является единственным отношением. Мне никогда не нужно сравнивать cars_table.classified_id с main_table.classified_id, но мне нужно наоборот: main_table.classified_id = cars_table.classified_id).

Я не знаю, какой тип Join использовать ... Любая помощь? Осталось присоединиться?

Спасибо

Ответы [ 3 ]

0 голосов
/ 02 марта 2010
SELECT * FROM main_table LEFT JOIN cars_table ON main_table.classified_id = cars_table.classified_id

Вернет 1- ?? копии строк main_table в зависимости от того, сколько в cars_table соответствует. Если совпадений нет, все значения из cars_table будут NULL

0 голосов
/ 02 марта 2010

Я не совсем уверен, о чем вы спрашиваете, но при условии, что вы ищете все записи в main_table, которые соответствуют некоторому условию, и вы хотели бы иметь при себе любые записи в cars_table, которые имеют тот же секретный_id как и для любой соответствующей записи в основной таблице, даже если таких записей нет в cars_table, вы должны использовать левое соединение следующим образом:

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

Когда существует запись M, для которой f (M.foo) оценивается как TRUE, но нет соответствующей записи C, запись M все равно будет отображаться в наборе результатов, но все поля C будут иметь значение NULL.

Более подробное объяснение левых внешних объединений (то же самое, что и левое соединение) можно найти здесь:

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

Вам нужно взглянуть на примеры данных, чтобы понять пример, который они приводят для левого внешнего соединения:

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

0 голосов
/ 02 марта 2010

Да, это левое соединение

Что-то вроде

SELECT  *
FROM    main_table mt LEFT JOIN
        cars_table ct ON mt.classified_id = ct.classified_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...