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
kefirek
post
Post #2





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


Zobacz tak
  1. SELECT c.cat_id, c.cat_title, GROUP_CONCAT(p_title) AS kat FROM pages_cats c
  2. LEFT JOIN pages p ON (c.cat_id=p.p_catid)
  3. GROUP BY cat_id


ALbo tak

  1. <?php
  2. $wynik = mysql_query("SELECT * FROM pages_cats");
  3. if(mysql_num_rows($wynik) > 0) {
  4. while($r = mysql_fetch_assoc($wynik)) {
  5. echo $r['cat_title'].'<br>';
  6. $wynik1 = mysql_query("SELECT p_title FROM pages WHERE p_catid=".$r['cat_id']."");
  7. while($r1 = mysql_fetch_assoc($wynik1)) {
  8. echo $r1['p_title'].'<br>';
  9. }  
  10. }
  11. }
  12. ?>


Innego pomysłu nie mam

Ten post edytował kefirek 23.02.2009, 20:59:46
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: 12.10.2025 - 12:43