Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobranie danych z dwóch tabel i pogrupowanie według pierwszej tabeli, problem z zapytaniem
pgrzelka
post
Post #1





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Witam

posiadam dwie tabelę

pages_cats
-cat_id
-cat_title

pages
-p_id
-p_title
-p_catid

potrzebuję pobrać dane w mniej więcej taki sposób
  1. "SELECT pages_cats.cat_title,
  2. (SELECT pages.p_title FROM pages WHERE (pages.p_catid=pages_cats.cat_id)) as dane
  3. FROM pages_cats"

czyli do każdego rekordu z 'pages_cats' dodajemy wszystkie rekordy z 'pages' gdzie pages.p_catid = pages_cats.cat_id

dostaje taki komunikat:
Cytat
SQLSTATE[21000]: Cardinality violation: 1242 Subquery returns more than 1 row


pierwszy raz stworzyłem takie zapytanie i mam z nim spory problem,
po błędzie widzę że chodzi o to że wewnętrzne zapytanie zwróciło więcej niż jeden rekord, ale mi właśnie o to chodzi
gdzie tu jest błąd ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pgrzelka
post
Post #2





Grupa: Zarejestrowani
Postów: 313
Pomógł: 24
Dołączył: 9.08.2008
Skąd: Kielce

Ostrzeżenie: (0%)
-----


dzięki kefirek za pomoc, zrobiłem trochę inaczej
wykorzystałem zapytanie z Twojego pierwszego posta i potem przetworzyłem dane
Kod
        $rows = $db->fetchAll("
        SELECT c.cat_title, p.p_linktitle, p.p_id
        FROM pages p
        LEFT JOIN pages_cats c ON (p.p_catid=c.cat_id)
        WHERE c.cat_siteid='$site_id'
        ");

        $rows2 = array();
        foreach ($rows as $v) {
            $rows2[$v['cat_title']][] = array($v['p_linktitle'], $v['p_id']);
        }
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.10.2025 - 07:54