Автор Тема: Вывод данных из двух таблиц  (Прочитано 8802 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Turok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« : 02 Марта 2005, 17:28:21 »
имеется две таблицы
Autor (autor_id, autor_name, autor_mail, autor_www) - юзеры
Work (w_id, w_autor_id, w_text) - работы юзеров

Помогите плиз вывести таблицу типа:
Юзер \\ Майл \\ Сайт \\ Кол-во работ
--------------------------------------------------
делал вот как:

$ath 
mysql_query("select * from Autor");
if(
$ath)
{
  echo 
"<table border=1>";
  echo 
"<tr><td>Имя</td><td>Мыло</td><td>Сайт</td><td>Кол-во работ</td></tr>";
  while(
$autor mysql_fetch_array($ath))
  {
    echo 
"<tr><td><a href=?id=".$autor[\'autor_id\'].">".$autor[\'autor_name\']."</a> </td><td>".$autor[\'autor_mail\']." </td>
    <td>".$autor[\'autor_www\']." </td><td>".$tut_neznau_chto." </td></tr>";
  }
  echo "</table>";
}
else
{
  echo "<p><b>Error: ".mysql_error()."</b><p>";
  exit();
}


------------------------
выводит нормально, НО!!! не могу получить данные в (Кол-во работ)
в таблице Work живут работы юзеров, в поле w_autor_id проставляется autor_id из таблицы Autor
Можно ли вывести все одним селектом? и как тогда переписать массив?

Заранее спасибо за помощь.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #1 : 02 Марта 2005, 17:30:46 »
не массив, наверное, а запрос - ты хотел сказать?

Оффлайн Turok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #2 : 02 Марта 2005, 17:38:37 »
упс.. спасибо за поправку =) имелся в виду запрос

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #3 : 02 Марта 2005, 17:42:07 »
это не поправка - это вопрос.
Чтобы не гадать, что на самом деле имелось в виду.

знакомы ли тебе такие команды, как join и count?

Оффлайн Turok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #4 : 02 Марта 2005, 17:49:21 »
если чесно то не очень...
в поисках ответа на на свой вопрос лазил по докам mysql и обращал внимание на count(*) только что то не разобрался с ним (( при манипуляциях с  countом у меня все время вылезало у каждого пользователя одна и таже цифра... или пользователи дублировались и выводился у каждого номер автора вместо кол-ва

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #5 : 02 Марта 2005, 17:54:17 »
для начала научись получать количество работ для каждого автора
для этого надо выполнить запрос
select count(w_id) as rabot, w_autor_id FROM Worg GROUP BY w_autor_id

Оффлайн Turok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #6 : 02 Марта 2005, 18:03:55 »
прости за глупый вопрос... а за что отвечает (as rabot)?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #7 : 02 Марта 2005, 18:12:16 »
эх...
выполни запрос да посмотри массив  со строкой из базы.

Оффлайн Turok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #8 : 02 Марта 2005, 18:27:20 »
он мне вывел цифирь 2
похоже что выбрал работы одного автора... там всего три работы 2 одного и 1 другова...
вот как выводил:

function autor_count()
{
	
$ath2 mysql_query("select count(w_id) as rabot, w_autor_id FROM Work GROUP BY w_autor_id");
	
if(
$ath2)
{
  
$ar mysql_fetch_array($ath2); 
  echo 
$ar[\'rabot\'];
}
else
{
  echo "<p><b>Error: ".mysql_error()."</b><p>";
  exit();
}
}

-----------------------------------
а как же второй автор? или надо было использовать while?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #9 : 02 Марта 2005, 18:33:43 »
ну а ты как думаешь?

Оффлайн Turok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #10 : 02 Марта 2005, 18:43:52 »
получается чтобы получить таблицу
Юзер \\ Майл \\ Сайт \\ Кол-во работ

нужно будет два отдельных запроса к базе? или можно както объеденить запросы? мой первый запрос $ath = mysql_query("select * from Autor"); на вывод циклом таблицы юзеров

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #11 : 02 Марта 2005, 18:48:59 »
можно объединить.
это так и называется - обединение, или JOIN
тебе надо запросить количество работ, и присоединить к нему информацию об авторах.
SELECT count(w_id) as rabot, Autor.* FROM Work, Autor WHERE w_id=w_autor_id GROUP BY w_autor_id

Оффлайн Turok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #12 : 02 Марта 2005, 18:56:33 »
с таким селектом почемуто выводит только одного автора с его работами

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #13 : 02 Марта 2005, 19:03:34 »
ну да, я перепутал названия полей.
Это будет втое домашнее задание.
тебе надо объединить две таблицы по автору.

Оффлайн Turok

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 27
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вывод данных из двух таблиц
« Ответ #14 : 02 Марта 2005, 19:04:36 »
ок =)
завтра буду выполнять )) спасибо

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28