[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: запрос к бд
antonov_sa
Здравствуйте!
Подскажите, плиз, как реализовать
у меня есть 3 таблицы
первая

id name
1 n1
2 n2
и т.д

вторая таблица связей к первой, т.е. в ней

id cat
1 c1
1 c2
1 c3
1 c4
2 c3
2 c2

третья таблица

text cat
..... c1
..... c2
и т.д

мне нужно составить запрос к базе, чтобы например выбрались все строки из 3й таблицы, для id=1 из первой таблицы, а соответствует ли запись 3й таблицы id из первой проверилось во второй.
другим словами, у меня есть пользователь, который хранится в первой таблице, он относится к различным категориям из второй таблицы, а третья таблица это заявки, которые приходят для категории, и пользователь должен видить только те заявки, которые относятся к его категориям
Заранее благодарен за помощь!



Спустя 16 минут, 38 секунд (13.03.2010 - 15:30) Mirexzpalich написал(а):
Пусть 1-я табла называется user, вторая - group, третья - cat. Попробуй так:
$link=mysqli_connect(host,user,password,base);
if(!$link){
$mysql_error="Ошибка подключения: ". mysqli_connect_error();
die($mysql_error);
};
$result=mysqli_query($link,'SELECT text FROM cat,user,group where user.id=1 && user.id=gruop.id && group.cat=cat.cat');
if (!$result) {
$errno=mysqli_errno($link);
$error=mysqli_error($link);
die("Ошибка запроса: $error (код ошибки: $errno)");
}

while($row=mysqli_fetch_array($result)){
echo "{row['text']}</br>";
}

Многие скажут это маразм. Но мне так удобнее:
user.id=1 && user.id=gruop.id && group.cat=cat.cat


Можно написать проще:
gruop.id=1 && group.cat=cat.cat

Спустя 21 час, 22 минуты, 33 секунды (14.03.2010 - 12:53) antonov_sa написал(а):
$result=mysqli_query($link,'SELECT text FROM cat,user,group where user.id=1 && user.id=gruop.id && group.cat=cat.cat');

спасибо! это конструкция работает, подскажите, чем отличается mysql_query и mysqli_query? Почему здесь обязательно надо вставлять $link в запрос? и почему это не работает просто на mysql_query? Спасибо!

Спустя 1 час, 49 минут, 20 секунд (14.03.2010 - 14:42) antonov_sa написал(а):
еще вопрос.. скажем у меня в таблице "cat" тоже есть столбец "id" и я хочу выводить его рядом с "text", но у меня выводится id из таблицы group, как это избежать? или только переименовывать?

Спустя 9 минут, 52 секунды (14.03.2010 - 14:52) Nikitian написал(а):

select [...] cat.id as catid [....]

Соответственно и выодите $row['catid']

Спустя 22 минуты, 31 секунда (14.03.2010 - 15:14) antonov_sa написал(а):
Цитата (Nikitian @ 14.03.2010 - 11:52)

select [...] cat.id as catid [....]

Соответственно и выодите $row['catid']

спасибо )

Спустя 4 часа, 33 минуты, 44 секунды (14.03.2010 - 19:48) Mirexzpalich написал(а):
mysqli на сколь ко я понимаю. позволяет работать сразу с несколькими подключениями. Вот и надо указать какое:
$result=mysqli_query($link,'SELECT text  FROM cat,user,group where user.id=1 && user.id=gruop.id && group.cat=cat.cat');

Здесь подключение - $link. Данная конструкция появилась в PHP5. До этого было только mysql.

Спустя 24 минуты, 49 секунд (14.03.2010 - 20:13) Nikitian написал(а):
mysql_*() тоже позволяет работать с несколькими подключениями. Но разрабы пыха крайне рекомендуют перейти на mysqli.

Спустя 8 минут, 47 секунд (14.03.2010 - 20:22) antonov_sa написал(а):
Цитата (Nikitian @ 14.03.2010 - 17:13)
mysql_*() тоже позволяет работать с несколькими подключениями. Но разрабы пыха крайне рекомендуют перейти на mysqli.

$result=mysqli_query($link,'SELECT text FROM cat,user,group where user.id=1 && user.id=gruop.id && group.cat=cat.cat');

как переписать этот запрос без mysqli и без $link?

если я стираю букву i и $link, то ошибка Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, resource given in

Спустя 15 минут, 11 секунд (14.03.2010 - 20:37) Nikitian написал(а):
так надо везде букву "i" стирать smile.gif)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.