Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] pobieranie danych z 2 tabeli na podstawie 1
Forum PHP.pl > Forum > PHP
Lejto
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 ;

nospor
Cytat
ale nie chce działać

Zastosuj się proszę do podanych tu porad:
Temat: Jak poprawnie zada pytanie
psychol1986
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
tehaha
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
marcio
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.
tehaha
marcio chyba jednak jako jedyny tu dowidujesz:)
Lejto
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ć
nospor
mysql_error() uzywa sie dla funkcji mysql_query()
Czy Twoje
$this->sql->query
uzywa mysql_error() ?
futura
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.
Lejto
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ć?
futura
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.