За последние 24 часа нас посетили 20024 программиста и 1001 робот. Сейчас ищут 310 программистов ...

Помогите с запросом!

Тема в разделе "MySQL", создана пользователем joost, 17 дек 2007.

  1. joost

    joost Guest

    Есть две таблици
    Таблица1(код1, название1) и Таблица2(код2, название2)

    надо выбрать из Таблица2 все записи, которых нет в таблице1 при условии, что код>0


    Таблица1
    Таня 10
    Маша 11
    Миша 25
    Коля 16

    Таблица2
    Таня 0
    Маша 0
    Витя 8
    Миша 45
    Света 47
    Коля 65

    Результат запроса
    Витя
    Света
     
  2. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    :shock: какого?
    не вижу.
     
  3. Goryn

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

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Как осуществляется связь между этими таблицами? Логику нарисуй.
     
  4. joost

    joost Guest

    Как сделать связь - еще не знаю. Можете подсказать как будет лучше для исполнения запроса
     
  5. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
  6. joost

    joost Guest

    вот пробовал так
    [sql]
    SELECT type.code_type, type.name_type FROM type where count (select glos from glos_type where type.code_type=glos_type.code_type)=0 )
    [\sql]

    не работает
     
  7. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
  8. Ipolit

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

    С нами с:
    18 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    вот навскидку:

    select Таблица2.название2 from Таблица2
    left join Таблица1 on Таблица2.название2 = Таблица1.название1
    where Таблица1.название1 is null and Таблица2.код2 > 0
     
  9. joost

    joost Guest

    читал документацию по SQL, но ни как не могу понять что делает left join.

    Обясните доступно. Если можно с примерами!
     
  10. Ipolit

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

    С нами с:
    18 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    RTFM - там доступно.

    пример смотри в моем предыдущем посте, проще некуда.
     
  11. joost

    joost Guest

    уже перечитал все, что можно!
    нельзя сказать, что ничего не понял, но всеже хотелось бы в двух словах
    что делает left join?
    что делает on?
    напрмер select - выбирает записи по условию и без
    update - изменяет записи по условию и без
     
  12. Ipolit

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

    С нами с:
    18 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    плохо читаешь: RTFM
    а заодно мог бы прочитать и для SELECT
     
  13. joost

    joost Guest

    почему тогда надо писать
    select Таблица2.название2 from Таблица2
    left join Таблица1 on Таблица2.название2 = Таблица1.название1
    where Таблица1.название1 is null and Таблица2.код2 > 0

    разве так нельзя
    select Таблица2.название2 from Таблица2
    left join Таблица1
    where Таблица1.название1 is null and Таблица2.код2 > 0 and Таблица2.название2 = Таблица1.название1

    null означает пустое значение или не существование поля Таблица1.название1?
     
  14. Ipolit

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

    С нами с:
    18 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    попробуй, работает? правильно? - значит можно.
     
  15. joost

    joost Guest

    как я понял on ето что-то типа where для join?
     
  16. Ipolit

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

    С нами с:
    18 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    см. сюда
     
  17. joost

    joost Guest

    по идеи должно работать?

    но учитывая, что Вы явно опытнее меня всеже использовали вариант с on. Почему?
     
  18. joost

    joost Guest

  19. Ipolit

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

    С нами с:
    18 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    joost
    посмотрел, ответил.
     
  20. joost

    joost Guest

    сделал
    select Таблица2.название2 from Таблица2
    inner join Таблица1 on Таблица1.название1 like '%Таблица2.название2%'


    дает результат 0 рядков. Хотя должно быть точно не 0.


    в чем ошибка?
     
  21. Ipolit

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

    С нами с:
    18 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    ошибка в '%Таблица2.название2%'
     
  22. joost

    joost Guest

    в join нельзя использовать like %%?
    или я что-то не правильно написал?
     
  23. Ipolit

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

    С нами с:
    18 дек 2007
    Сообщения:
    34
    Симпатии:
    0
    Можно, например '%маша%', но "Таблица2.название2" воспринимается как текст, а не как значение ячейки.

    поэтому и ищутся в Таблица1.название1 ячейки содержащие текст "чето там Таблица2.название2 чето там".
     
  24. joost

    joost Guest

    так
    select model.name_model from model, data where data.name_data like '%model.name_model%'

    тоже пустой результат, хотя точно совпадения есть
     
  25. joost

    joost Guest

    а как тогда сделать, что-бы воспринималось как значение ячейки?