Поиск по двум таблицам, с выводом

DenVeroid

Новичок
Поиск по двум таблицам, с выводом

имеются две таблици resume и vacancy, нужно из них найти по полю должность, но как это сделать немогу понять, вот код что смог сделать, но всёравно чет не то, находит совсем не нужное?

вот сам код

PHP:
$word = 'программист';

$q = mysql_query("SELECT *, resume.id AS resume_id, resume.profecy AS resume_profecy, vacancy.id AS vacancy_id, vacancy.profecy AS vacancy_profecy FROM vacancy,resume WHERE vacancy.profecy LIKE '%$word%' OR resume.profecy LIKE '%$word%'");

while($row=mysql_fetch_array($q)) {

$row['vacancy_id'];
$row['vacancy_profecy']

$row['resume_id'];
$row['resume_profecy'];

}
может я что-то нетак делаю, подскажите пожалуйста
 

tashkentchi

Новичок
SELECT *, resume.id AS resume_id, resume.profecy AS resume_profecy, vacancy.id AS vacancy_id, vacancy.profecy AS vacancy_profecy FROM vacancy,resume WHERE vacancy.profecy LIKE '%$word%' AND resume.profecy LIKE '%$word%'

А зачем вообще объединять вакансии с резюме?
 

dnes

Новичок
Непонятно... Тебе нужны совпадения в обеих таблицах?

Тогда вместо OR поставь AND.

А зачем SELECT *?

Сорри!

tashkentchi фёст
 

DenVeroid

Новичок
извеняюсь только приехал

я уже делал так, ставил AND вместо OR, получается что если находимого текста нет в таблице вакансиях а есть в резюме, то результат нулевой или наоборот.
Это не подходит, я незнаю, мне пока не приходит в голову как сделать, думаю что это неправельно да и вообще я как думаю что это невозможно сделать

я могу сделать два запроса один для вакансий а другой для резюме, и выводить отдельно, но что если найдено будет много, соответсвено нужно делать постраничник, и тогда тут придётся его делать для каждой таблице. Но мне хотелось всё сделать всё вместе
 

baev

‹°°¬•
Команда форума
Вас обманывают -- AND тут точно не нужен.
А вот почему у Вас первоначальный запрос не работает...

Во-первых, Вы так и не задали вопроса. Типа, "ожидаю получить то-то, а получаю это: ... , -- почему?"

Во-вторых, что за код Вы тут показываете? Вы хотите, чтоб Вам в в приведённом коде ошибки показали?
Ну, так это не код, а бред.
Странно, как предыдущие ораторы этого не заметили...
 

DenVeroid

Новичок
baev, получить я хотел результат выборки из базы из двух таблиц
 

baev

‹°°¬•
Команда форума
Покажите несработавший запрос и ответ MySQL (выданное сообщение об ошибке) на него.

Да, и насчёт кода: это что -- Ваш реальный код?
 

DenVeroid

Новичок
да нет, ошибок нет, просто проблема в другом, он находит, но и вместе с этим, ещё ненужное выводит

насчёт кода что привёл в первом посте, это мой код и писал я
 

baev

‹°°¬•
Команда форума
Автор оригинала: DenVeroid это мой код и писал я
Ещё раз: это не код, а бред.

Что означают эти строки:
PHP:
while($row=mysql_fetch_array($q)) {

$row['vacancy_id'];
$row['vacancy_profecy']

$row['resume_id'];
$row['resume_profecy'];

}
, что Вы хотели этим получить?
 

DenVeroid

Новичок
я небуду спорить может и действительно бред, но писал как мог.

этот код как бы разделяет данные таблици резюме от вакансий
 

baev

‹°°¬•
Команда форума
Гхм...

Я уж сомневаться начал -- может, у меня на экране чё-то не то показывается?

Пожалуйста, поясните каждую строчку внутри цикла -- чего она по-Вашему делает?
 

dnes

Новичок
baev

Странно, как предыдущие ораторы этого не заметили...
Стыжусь. Сосредоточился на запросе.


Однако при наличии отсутствия ясной цели запроса, предлагаю воздержаться от преждевременных обвинений насчет AND ;)


Цитата #1:

ставил AND вместо OR, получается что если находимого текста нет в таблице вакансиях а есть в резюме, то результат нулевой или наоборот
Цитата #2:

проблема в другом, он находит, но и вместе с этим, ещё ненужное выводит
 

tashkentchi

Новичок
Я бы сделал два запроса и не парился. Но если уж очень хотца, то можно так (если типы полей в обеих таблицах совпадают):
PHP:
"SELECT *
   FROM vacancy
   WHERE profecy LIKE '%$word%'
UNION
SELECT *
   FROM resume
   WHERE profecy LIKE '%$word%'"
 

DenVeroid

Новичок
напишу по новому, а то может непонятно.

Суть такова, нужно сделать форму примерно такого вида

PHP:
<form method="post" action="search.php">
<input type="text" name="word">
<input type="submit" value="Найти">
</form>
и нам нужно найти должность допустим "программист"
мы вводим в эту форму это слово, и поиск должен производиться по двум таблицам, по вакансиям и резюме, но как это сделать немогу понять.
Сделать поиск отдельно в два запроса можно, но что делать если результат будет большой, нужно делать постраничник, причём каждый постраничник для каждой таблице, но как делать общий постраничник, или это невозможно?


вот таблица, так может немного понятнее будет, над чем будет производиться поиск

PHP:
$sql_tables[] = "CREATE TABLE `resume` (
  `id` int(11) NOT NULL auto_increment,
  `cat` int(11) default NULL,
  `about` text,
  `action` int(11) NOT NULL default '0',
  `pwd` varchar(255) default NULL,
  `city` varchar(100) default NULL,
  `vuz` varchar(100) default NULL,
  `date` varchar(30) default NULL,
  `view` int(11) default '0',
  `ip` varchar(20) NOT NULL default '0',
  `contact_person` varchar(255) default NULL,
  `contact_phone` varchar(100) default NULL,
  `contact_e_mail` varchar(100) default NULL,
  `dateup` varchar(30) default NULL,
  `profecy` varchar(100) default NULL,
  `exp_date` date default NULL,
  `contact_url` varchar(255) default NULL,
  `age` int(10) default NULL,
  `money` varchar(150) default NULL,
  `period` int(5) unsigned NOT NULL default '0',
  `sex` varchar(100) NOT NULL default '',
  `education` varchar(100) NOT NULL default '0',
  `grafic` varchar(100) NOT NULL default '0',
  `stazh` varchar(100) NOT NULL default '0',
  `employment` varchar(100) NOT NULL default '0',
  `contact_icq` varchar(100) default NULL,
  `spec` varchar(255) default NULL,
  `skills` text,
  `education_text` text,
  `currency` varchar(10) default NULL,
  `grazhdanstvo` varchar(10) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `ID` (`id`)
) TYPE=MyISAM;";


$sql_tables[] = "CREATE TABLE `vacancy` (
  `id` int(11) NOT NULL auto_increment,
  `cat` int(11) default NULL,
  `description` text,
  `action` int(11) NOT NULL default '0',
  `pwd` varchar(255) default NULL,
  `city` varchar(100) default NULL,
  `org` varchar(100) default NULL,
  `date` varchar(30) default NULL,
  `view` int(11) default '0',
  `ip` varchar(20) NOT NULL default '0',
  `contact_person` varchar(255) default NULL,
  `contact_phone` varchar(100) default NULL,
  `contact_e_mail` varchar(100) default NULL,
  `dateup` varchar(30) default NULL,
  `profecy` varchar(100) default NULL,
  `exp_date` date default NULL,
  `contact_url` varchar(255) default NULL,
  `age` int(10) default NULL,
  `money` varchar(150) default NULL,
  `period` int(5) unsigned NOT NULL default '0',
  `sex` varchar(100) NOT NULL default '',
  `education` varchar(100) NOT NULL default '0',
  `grafic` varchar(100) NOT NULL default '0',
  `stazh` varchar(100) NOT NULL default '0',
  `employment` varchar(100) NOT NULL default '0',
  `currency` varchar(10) default NULL,
  `grazhdanstvo` varchar(10) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `ID` (`id`)
) TYPE=MyISAM;";
извеняюсь за столь большой код, больше выкладывать не буду
 

SelenIT

IT-лунатик :)
...нужно делать постраничник, причём каждый постраничник для каждой таблице, но как делать общий постраничник, или это невозможно?
Мда... в SQL такую умопомрачительную фразу не построишь никакими union-ами :)

На самом деле можно реализовать и два независимых постраничника, и один общий. Во втором случае только нужно сначала решить, что и как будет выводиться на каждой странице, скажем, если нашлись 47 резюме и 2 вакансии. Главный вопрос - зачем вообще выводить вакансии и резюме в общей куче, но, как я понял, он здесь не обсуждается...
 

baev

‹°°¬•
Команда форума
Блин.

DenVeroid, я Вам непонятно вопрос задал?
Запрос у Вас в первом посте -- правильный.

А вот код вывода Вы никак пояснить не желаете...
 

tashkentchi

Новичок
Запрос у Вас в первом посте -- правильный.

А вот код вывода Вы никак пояснить не желаете...
Что в нем правильного, если он мусора выводит больше, чем искомого?

-~{}~ 27.06.05 21:08:

И не надо мешать вакансии с резюме. Логически, - это разные сущности, и выводить их надо раздельно.
 

alexhemp

Новичок
DenVeroid

Вы не знаете что ищете. Если знаете - то ужесточите условие и не будет мусора.

Что Вы запрашиваете - то mySQL и выводит. Вопрос в том, как попросить то, что вам нужно. А для этого Вам нужно это четко сформулировать.
 

SelenIT

IT-лунатик :)
DenVeroid

Прошу вас срочно уточнить конечную цель Ваших "финтов ушами", пока тут желающие вам помочь не передрались из-за концептуальных разногласий на почве непонимания этой цели. Что именно вы пытаетесь сделать:

а) просто вывести все записи из обеих таблиц, содержащие искомое слово в поле "профессия";
б) подобрать пары "вакансия-резюме", совпадающие по заданному набору условий;
в) что-то еще?

tashkentchi и я с ходу подумали про первый вариант, baev, судя по всему, про второй. Нужно срочно внести ясность!
 

DenVeroid

Новичок
И не надо мешать вакансии с резюме. Логически, - это разные сущности, и выводить их надо раздельно.
я тоже так думаю, но проблема в том что заказчик хочет чтобы всё выводилось вместе, правдо не пойму зачем ему это, ведь если кому-то и нужно искать в резюме, то зачем ему находить в вакансиях одновременно


baev
А вот код вывода Вы никак пояснить не желаете...
извени, этот код должен был разделять при выводе данных вакансий от резюме
тоесть $row['vacancy_profecy']; выводит должность для вакансии а код $row['resume_profecy']; выводит для резюме
 
Сверху