Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выборка из одной таблицы с учетом данных другой таблицы
 
 автор: jazz2000   (19.03.2010 в 16:49)   письмо автору
 
 

Добрый день товарищи!

Мучает нерешенная задача. Есть две таблицы:

1. auto

tip | model | prodano |
--------------------------------------
1 | камаз |..........0.......|
2 | маз.....|.........1........|
3 | газ...... |.........0........|
1 |краз.....|.........0........|

2. tip
id...|.........tip..........|
-----------------------------
1....|..самосвал...|
2....|......тягач........|
3....|.....грузовик..|

auto.tip связана с tip.id

Прошу помочь составить запрос для выборки из таблицы tip всех уникальных значений поля tip которые не проданы (auto.prodano != 1)
Спасибо!

  Ответить  
 
 автор: .....   (19.03.2010 в 17:10)
 
   для: jazz2000   (19.03.2010 в 16:49)
 

почему именно из tip , и в каком смысле уникальных ?
Если вроде такого
SELECT * FROM auto LEFT JOIN tip
ON auto.tip = tip.id
WHERE auto.prodano = 0
Выберется два раза самосвал и один раз грузовик
Или нужно всего по разу и если хоть один из самосвалов не соответствует (auto.prodano !=1) значит самосвал в результате нужен или не нужен ?

  Ответить  
 
 автор: jazz2000   (19.03.2010 в 17:35)   письмо автору
 
   для: .....   (19.03.2010 в 17:10)
 

Спасибо за помощь! Начинаю по тихоньку разбираться. Я слабоват в MySQL и сейчас колдую с вашим кодом что бы результат был таков: один раз выдало самосвал и один раз грузовик

  Ответить  
 
 автор: .....   (19.03.2010 в 21:07)
 
   для: jazz2000   (19.03.2010 в 17:35)
 

Т.е просто добавить GROUP BY tip.tip ?

вроде тогда это tip.tip должно быть явно указано, т.е вместо SELECT * должен быть список SELECT auto.id, tip.tip.... Но я не проверял, и возможно просто достаточно того что tip.tip есть в списке возвращаемых полей, но стараюсь вручную указывать

  Ответить  
 
 автор: .....   (19.03.2010 в 21:25)
 
   для: .....   (19.03.2010 в 21:07)
 

что-то неподумал GROUP BY auto.tip должно-бы быть лучше в таком запросе.
Но как тоже начинающий сомневаюсь что это оптимально , и забыл сказать что странно то что в первой таблице нет первичного ключа. Запросы лучше можно понять с EXPLAIN SELECT ,потестить некогда :)

  Ответить  
 
 автор: jazz2000   (22.03.2010 в 10:21)   письмо автору
 
   для: .....   (19.03.2010 в 21:25)
 

Спасибо за помощь, Все сделано. Тот код, что выполняет все необходимое для меня выглядит так
SELECT DISTINCT tip.tip tip.id  
FROM tip LEFT JOIN auto 
ON tip.id = auto.tip 
ORDER BY tip.tip 

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования