Подскажите, плиз, как реализовать
у меня есть 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? Спасибо!
спасибо! это конструкция работает, подскажите, чем отличается 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) |
Соответственно и выодите $row['catid'] |
спасибо )
Спустя 4 часа, 33 минуты, 44 секунды (14.03.2010 - 19:48) Mirexzpalich написал(а):
mysqli на сколь ко я понимаю. позволяет работать сразу с несколькими подключениями. Вот и надо указать какое:
Здесь подключение - $link. Данная конструкция появилась в PHP5. До этого было только mysql.
$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" стирать )