shipilovmisha
@shipilovmisha
Учу php, нуб))

Как построить запрос в sql?

Как построить запрос, чтоб вывело авторов, у которых более одной книги и вывести еще и количество книг у каждого автора?
<?php
//$g=$mysqli->query("SELECT * FROM books where id  in (SELECT book_id from author_books)"); есть автора
$g=$mysqli->query("SELECT * FROM books where id not in (SELECT book_id from author_books)");


$result=[];
while($b=mysqli_fetch_assoc($g)){
	$result[]=$b;
}

?>
<h4>Книги без автора</h4>
<table border="1">
	<tr>
		<th>Книгa</th>
	</tr>
<?php
foreach($result as $v){
	echo '<tr>
			<td>'.$v['b_name'].'</td>
		</tr> ';
}
?>
</table>
<hr>

<?php

$g=$mysqli->query("SELECT * FROM books where id not in (SELECT book_id from author_books)");


$result=[];
while($b=mysqli_fetch_assoc($g)){
	$result[]=$b;
}

?>
<h4>Авторы у которых более одной книги</h4>
<table border="1">
	<tr>
		<th>Автора</th>
	</tr>
<?php
foreach($result as $v){
	echo '<tr>
			<td>'.$v['b_name'].'</td>
		</tr> ';
}
?>
</table>
<hr>

3fdbda7ef21b4701b42eef2d747a99c7.png48612cdbc9654d0c8a296c683da729aa.png3d8a2067539f4b038bf2c79e11023ef3.png
  • Вопрос задан
  • 2709 просмотров
Пригласить эксперта
Ответы на вопрос 2
olegtytarenko2
@olegtytarenko2
разработываю саты на cms PHP. Сейчас практикую yii
SELECT a.*, b.count_book 
FROM authors a, 
        (SELECT author_id, COUNT(book_id) as count_book 
         FROM author_books GROUP BY author_id 
         HAVING COUNT(book_id) > 1) b 
WHERE a.id = b.author_id


ОТВЕТ:
Михаил Шипилов:

$sql = "SELECT a.*, b.count_book FROM authors a,         (SELECT author_id, COUNT(book_id) as count_book          FROM author_books GROUP BY author_id          HAVING COUNT(book_id) > 1) b WHERE a.id = b.author_id";
$results = $mysqli->query($sql); 

foreach($results as $result) {
echo $result['f_name'] . " " . $result['s_name'] . " - " . $result['count_book'] . " книг";
}
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
select authors.*, count(1) cnt from books, authors where books.author_id=authors.id group by author_id having cnt >1
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы