Jump to content
  • 0

объединение одной и той же таблицы


slo_nik
 Share

Question

Добрый день.

Пожалуйста, помогите довести до ума запрос или подскажите правильное решение.

Есть таблица, в которой хранятся "вакансии" и "резюме"

Надо сделать :

1) Подсчитать кол-во вакансий и резюме по отдельности

2)Вывести последние пять вакансий и резюме

Попробовал сделать такой запрос


<?php
/* этот запрос считает кол-во "вакансий" и "резюме" по отдельности
будет вложен во второй запрос */
$dr_query = "SELECT `direction` AS `direc`,
COUNT(`direction`) AS `Tdirec`
FROM ".$table_vr."
WHERE `status` = 'show'
GROUP BY `direction`";
/* результат работы запроса
Array
(
[direc] => вакансия
[Tdirec] => 7 // общее кол-во вакансий
)

Array
(
[direc] => резюме
[Tdirec] => 4 // общее кол-во резюме
) */

/* этот запрос получает необходимые записи в таблице, в него вложен запрос $dr_query.
надо изменить этот запрос так, чтобы когда будет выведено 5 последних "вакансий"
начался вывод 5 последних резюме */
$vr_query = "SELECT `vr`.`id_vr` AS `id_vr`,
`vr`.`subsection` AS `vr_submain`,
`vr`.`direction` AS `vr_direc`,
`dr`.`Tdirec`
FROM (".$dr_query.") AS `dr`
LEFT JOIN ".$table_vr." AS `vr` ON(`vr`.`direction` = `dr`.`direc`)
WHERE `vr`.`status` = 'show'
ORDER BY `vr`.`direction`, `vr`.`id_vr` DESC ";
/* пока результат работы скрипта такой (это часть вывода, не вся...)
Array
(
[id_vr] => 6
[vr_submain] => фотограф
[vr_direc] => вакансия
[Tdirec] => 7
)

Array
(
[id_vr] => 4
[vr_submain] => корреспондент
[vr_direc] => вакансия
[Tdirec] => 7
)

Array
(
[id_vr] => 30
[vr_submain] => Не указана.
[vr_direc] => резюме
[Tdirec] => 4
)

Array
(
[id_vr] => 27
[vr_submain] => Не указана.
[vr_direc] => резюме
[Tdirec] => 4
)*/

Если применить LIMIT, то естественно выведет только 5 "вакансий" и всё, а мне надо 5 "вакансий" и 5 "резюме".

Подскажите, как решить эту задачу?

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

копать в сторону GROUP BY.

что-то вроде: ORDER BY (a.value1 + b.value2) DESC LIMIT 5;

В этом случае выведет только пять записей, а мне надо 5 "вакансий" и 5 "резюме", а в общем получается 10 записей...

Link to comment
Share on other sites

  • 0

Три запроса:

1. SELECT COUNT(*) FROM `table` WHERE `type`='Вакансия'

2. SELECT COUNT(*) FROM `table` WHERE `type`='Резюме'

3. (SELECT * FROM `table` WHERE `type`='Вакансия' LIMIT 5) UNION (SELECT * FROM `table` WHERE `type`='Резюме' LIMIT 5)

Но лучше разнести на разные таблички.

Link to comment
Share on other sites

  • 0

Три запроса:

1. SELECT COUNT(*) FROM `table` WHERE `type`='Вакансия'

2. SELECT COUNT(*) FROM `table` WHERE `type`='Резюме'

3. (SELECT * FROM `table` WHERE `type`='Вакансия' LIMIT 5) UNION (SELECT * FROM `table` WHERE `type`='Резюме' LIMIT 5)

Но лучше разнести на разные таблички.

Разница в таблицах будет только в одном(!) поле и то, только в значении, все остальные поля одинаковые. Вот поэтому всё в одной таблице

Изменил запрос на такой, но всё равно что то не получается разделить LIMIT


<?php
$vr_query = "SELECT `vr`.`id_vr` AS `id_vr`,
`rv`.`id_vr` AS `id_rv`,
`rv`.`subsection` AS `rv_submain`,
`vr`.`subsection` AS `vr_submain`,
`vr`.`direction` AS `vr_direc`,
`rv`.`direction` AS `rv_direc`,
`dr`.`Tdirec`
FROM (".$dr_query.") AS `dr`
LEFT JOIN ".$table_vr." AS `vr` ON(`vr`.`direction` = `dr`.`direc`
AND `dr`.`direc` != 'резюме'
AND `vr`.`status` = 'show')
LEFT JOIN ".$table_vr." AS `rv` ON(`rv`.`direction` = `dr`.`direc`
AND `dr`.`direc` != 'вакансия'
AND `rv`.`status` = 'show')
ORDER BY `vr`.`direction`, `vr`.`id_vr` DESC, `rv`.`id_vr` DESC";
?>

Edited by slo_nik
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy