Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] pobieranie danych z 2 tabeli na podstawie 1
Lejto
post
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


Chcę pobrać informacje w jednym zapytaniu z 2 tabel, a dokładnie chcę pobrać liczbę rekordów z 2 tabeli na podstawie id z 1 tabeli
zorbiłem coś takiego
  1. $sql = $this->sql->query('select categories.id_categories,category from categories INNER JOIN videos ON categories.categories_id = videos.id_videos');

ale nie chce działać
tabele
  1.  
  2. CREATE TABLE IF NOT EXISTS `categories` (
  3. `category` text collate utf8_unicode_ci NOT NULL,
  4. `id_categories` int(11) NOT NULL AUTO_INCREMENT,
  5. PRIMARY KEY (`id_categories`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=25 ;
  7.  
  8.  
  9. CREATE TABLE IF NOT EXISTS `videos` (
  10. `video` text collate utf8_unicode_ci NOT NULL,
  11. `description` text collate utf8_unicode_ci NOT NULL,
  12. `title` text collate utf8_unicode_ci NOT NULL,
  13. `cover` varchar(50) collate utf8_unicode_ci NOT NULL DEFAULT 'okladki/',
  14. `data` datetime NOT NULL,
  15. `category` int(11) NOT NULL,
  16. `last_viev` datetime NOT NULL,
  17. `views` int(11) NOT NULL,
  18. `videos_id` int(11) NOT NULL AUTO_INCREMENT,
  19. PRIMARY KEY (`videos_id`)
  20. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;

Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
ale nie chce działać

Zastosuj się proszę do podanych tu porad:
Temat: Jak poprawnie zada pytanie
Go to the top of the page
+Quote Post
psychol1986
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 29.10.2008

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


Sprawdź co zwróci Ci jak wykonasz tą komednę sql = select categories.id_categories,category from categories INNER JOIN videos ON categories.categories_id = videos.id_videos
Go to the top of the page
+Quote Post
tehaha
post
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


przy drugiej wyciąganej kolumnie nie dałeś przedrostka z nazwą tabeli więc może dlatego nie działa, ja osobiście zrobiłbym to tak:
  1. SELECT a.id_categories, a.category FROM categories a INNER JOIN videos b ON a.categories_id = b.id_videos
Go to the top of the page
+Quote Post
marcio
post
Post #5





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Mozliwe ze nie dowiduje ale chyba nazwy z kolumnami id masz napisane na odwrot tzn zamiast categories.id powinno byc id.categories to samo z video.
Go to the top of the page
+Quote Post
tehaha
post
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


marcio chyba jednak jako jedyny tu dowidujesz:)
Go to the top of the page
+Quote Post
Lejto
post
Post #7





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


niestety żadna podpowiedź nie działa
jak wywołuje mysql_error to też nic nie dostaje, może w inny sposób muszę to wywołać
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




mysql_error() uzywa sie dla funkcji mysql_query()
Czy Twoje
$this->sql->query
uzywa mysql_error() ?
Go to the top of the page
+Quote Post
futura
post
Post #9





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 4.01.2010

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


Cytat
$sql = $this->sql->query('select categories.id_categories,category from categories INNER JOIN videos ON categories.categories_id = videos.id_videos');


Spróbuj coś takiego:

Kod
$sql = $this->sql->query('select c.id_categories,c.category from categories c INNER JOIN videos v ON c.id_categories = v.videos_id');


A jak nie zadziała to sprawdź z poziomu bazy danych czy zapytanie generuje jakiś wynik. Jeśli tak to masz coś źle w
Kod
$sql = $this->sql->query
, a jak nie tzn. że coś jest nie tak z zapytaniem.

Ten post edytował futura 29.03.2010, 09:07:20
Go to the top of the page
+Quote Post
Lejto
post
Post #10





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

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


coś działa
ale wyświetla tylko jeden rekord
  1. <?
  2. $sql = $this->sql->query('select c.id_categories,c.category from categories c INNER JOIN videos v ON c.id_categories = v.videos_id');
  3. ?>
  4. <div class="categories">
  5. <?
  6. while($row = $sql->fetch_array())
  7. {
  8. ?>
  9. <a href="categories/<?=$row[id_categories];?>" tltle="Filmy z napisami">
  10. <div class="column span-4"><?=$row[category];?></div></a>
  11. <?
  12. }
  13. ?>
  14. </div>
  15. <?

potrzebuje tego zapytania do wyświetlenia kategorii i obok liczby filmów które chce pobrać z 2 tabeli

nie da się tego poprawić?

Ten post edytował Lejto 29.03.2010, 20:28:58
Go to the top of the page
+Quote Post
futura
post
Post #11





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 4.01.2010

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


Może spróbuj takie coś:

Kod
$sql = $this->sql->query('select c.category from categories c INNER JOIN videos v ON c.id_categories = v.videos_id');


albo

Kod
$sql = $this->sql->query('select c.category from categories c INNER JOIN videos v ON c.id_categories = v.videos_id' WHERE c.category = v.category);


Później jak chcesz wyświetlić obok ilość filmów przypisanych do danej kategorii, to dajesz:

Kod
$ilosc = mysql_num_rows(query);
echo $ilosc;


Oto Tobie chodziło? Jeśli nie to popraw mnie.

Ten post edytował futura 30.03.2010, 08:25:34
Go to the top of the page
+Quote Post

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: 28.09.2025 - 11:05