MySQL Join, возвращающий несколько - PullRequest
0 голосов
/ 23 февраля 2012

Эй, ребята, я только что заметил, что мой оператор соединения здесь

        SELECT *
        FROM reports rpt
        JOIN (
            (SELECT report_key, shipper, po, commodity, label
            FROM berries)
            UNION 
            (SELECT report_key, shipper, po, commodity, label
            FROM melons)
            UNION 
            (SELECT report_key, shipper, po, commodity, label
            FROM citrus)
            UNION 
            (SELECT report_key, shipper, po, commodity, label
            FROM table_grapes)
            UNION 
            (SELECT report_key, shipper, po, commodity, label
            FROM tree_fruit)
            UNION 
            (SELECT report_key, shipper, po, commodity, label
            FROM lot)
        ) fruits ON rpt.inspection_number = fruits.report_key
        WHERE rpt.status < '2' 
        ORDER BY rpt.inspection_number DESC

возвращает каждую строку, где запрос соответствует условию, то, что я пытался получить, чтобы вернуть ОДНУЮ строку, что я сделалсделать неправильно?

Ответы [ 2 ]

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

Ну, вы возвращаете все строки из отчетов, где статус меньше '2', если у этой строки есть контрольный номер, который совпадает с ключом отчета из любой таблицы: ягоды, дыни, цитрусовые, table_grapes, tree_fruit или lot.

Какую единственную строку вы ожидали?

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

Вы можете добавить предложение limit n в конец, чтобы получить только одну строку:

    SELECT *
    FROM reports rpt
    JOIN (
        (SELECT report_key, shipper, po, commodity, label
        FROM berries)
        UNION 
        (SELECT report_key, shipper, po, commodity, label
        FROM melons)
        UNION 
        (SELECT report_key, shipper, po, commodity, label
        FROM citrus)
        UNION 
        (SELECT report_key, shipper, po, commodity, label
        FROM table_grapes)
        UNION 
        (SELECT report_key, shipper, po, commodity, label
        FROM tree_fruit)
        UNION 
        (SELECT report_key, shipper, po, commodity, label
        FROM lot)
    ) fruits ON rpt.inspection_number = fruits.report_key
    WHERE rpt.status < '2' 
    ORDER BY rpt.inspection_number DESC
    LIMIT 1                                               -- limit !!

Это вернет первый ряд.

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