Вы используете $db сразу для двух задач - естественно, что второй запрос приводит к тому, что его результат перетирает результат первого запроса.
Что делать? Есть три варианта - два дурацких, и один правильный:
- После выполнения первого запроса достаньте сразу все данные - закиньте их в отдельный массив, и обходите в цикле уже этот массив
- Не используйте $db для выполнения запроса внутри цикла - создайте для этого отдельный экземпляр класса, отвечающего за работу с БД
- Наконец, правильный вариант - доставайте все данные одним запросом, для этого вам потребуется разобраться с такой штукой как JOIN (вот прям берёте и гуглите - "sql join")