За последние 24 часа нас посетили 18009 программистов и 1634 робота. Сейчас ищут 1744 программиста ...

ON(sca.kladr_id LIKE '66%' and scr.kid LIKE '66%')

Тема в разделе "MySQL", создана пользователем ky3mu4u, 23 апр 2012.

  1. ky3mu4u

    ky3mu4u Активный пользователь

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    присоеденяю LEFT JOIN ом таблицу с кладером, чтобы первые две таблицы кладера соответствовали первым двум цифрам кладера из другой таблицы. Запрос работает но только если указывать цифры вручную LIKE '66%' если сделать так LIKE '[0-9][0-9]%' выводит неправильные данные
    Вот запрос:
    SELECT count(r.user_id) as counting
    FROM jos_users as u
    left JOIN jos_scregion as scr ON(scr.user_id = u.id)

    left JOIN jos_scaddress as sca ON(sca.kladr_id LIKE '66%' and scr.kid LIKE '66%')

    left JOIN jos_scusers as scu ON(scu.user_id = sca.user_id)
    left JOIN jos_screport as r ON(r.user_id = scu.user_id )
    WHERE u.ingen = 1 and u.id = 467 and r.status = 1 and (scu.status2 = 3 || scu.status2 = 4)
    GROUP BY u.id

    Помогите разобраться, как правильно соединить таблицы!
    Соединял бы один к одному но в таблицах только начальные 2 цифры совпадают. то есть соединение нужно проводить когда равны первые две цифры

    Добавлено спустя 33 минуты 53 секунды:
    LEFT JOIN jos_scaddress as sca ON(SUBSTRING(sca.kladr_id, 1, 2) = SUBSTRING(scr.kid, 1, 2))
    Вот до этого докопался, уже ближе, но считает все ровно большее количество чем надо

    Добавлено спустя 34 минуты 22 секунды:
    Все сам разобрался)) вот так это делается:
    LEFT JOIN (SELECT sca.kladr_id, sca.user_id FROM jos_scaddress as sca group by sca.user_id) as sca ON(SUBSTRING(sca.kladr_id, 1, 2) = SUBSTRING(scr.kid, 1, 2))