MySQL SELECT Сложный запрос!!!

ka4alka

Новичок
MySQL SELECT Сложный запрос!!!

Привет всем!

ест два таблицы.
структура первой htp_category
id | int(11)
status | enum(active/deactive)

структура второй htp_translate

id | int(11)
tid | int(11)
status | enum(active/deactive)

нужен запрос такой, чтоб резултате показывал всех id из htp_category где status='active' и всех tid из htp_translate где равен htp_translate.tid=htp_category.id.

мой запрос такой но не показывает то что я хочу. прошу помогите мне разобратся с этой проблемой.

SELECT htp_category.id, htp_translate.tid
FROM htp_category, htp_translate
WHERE htp_category.status='active' AND htp_category.id=htp_translate.tid OR htp_translate.tid IS NULL
ORDER by htp_category.id ASC
 

KaYSer

Новичок
Код:
select c.`id`, t.`tid` from `htp_category` c
left join `htp_translate` t on t.`tid`=c.`id` 
where c.`status`="active" 
order by c.`id`
хы.. сложный?
 

HEm

Сетевой бобер
KaYSer
ему, видишь ли, нужно еще вытаскивать строки где tid является пустым, но что подставлять в этом случае в резальтсет в поле id непонятно
 

ka4alka

Новичок
KaYSer этого я тоже могу. но видиш ли мне нужны и tid вытащит где они пустые.
скажу так
в базе категори
id
1
2
3

а в базе транслита
tid
1
2

а как мне вытащит резултат чтоб было показано

id | tid
1 | 1
2 | 2
3 | NULL
tid это ид перевода категории с ид id, и означает что может быт категория с ид id может быт не переведен.
 

ka4alka

Новичок
на твоем примере id 3 не показывается!!!

-~{}~ 11.05.07 15:21:

select c.`id`, t.`tid` from `htp_category` c
left join `htp_translate` t on t.`tid`=c.`id`
where c.`status`="active" AND t.`reference_table`='htp_category' AND t.`reference_field`='name' OR t.tid IS NULL
order by c.`id`

если так показывает все и даже категории где status='deactive' а мне эти не надо

-~{}~ 11.05.07 15:22:

AND t.`reference_table`='htp_category' AND t.`reference_field`='name' эти не очен то важны!!!
 

KaYSer

Новичок
Код:
select c.`id`, t.`tid` from `htp_category` c
left join `htp_translate` t on t.`tid`=c.`id` and t.`reference_table`='htp_category' and t.`reference_field`='name'
where c.`status`="active"
order by c.`id`
больше не могу... к ФАНАТу
почитай про джойны
 

ka4alka

Новичок
нету разний с этим и первой каторый ты писал.(добавиль t.`reference_table`='htp_category') и ощибки ещо добавиль.
А где те каторые себя профи называют? несмоги задачу решит?

-~{}~ 11.05.07 17:07:

все можете закрыват тему!!!
 
Сверху