Problem z pobieraniem danych z 2 tabel

Witam.

Mam taki kod:

<?php 

		include('dodaj/conf.php');


		$result=mysql_query("SELECT * FROM `roboty` WHERE pkt > '$pkt' ");

		$num=mysql_numrows($result);

		$i=0;

		while ($i < $num) {

		$pkt=mysql_result($result,$i,"pkt");

		$robot=mysql_result($result,$i,"typ");

		$poziom=mysql_result($result,$i,"level");

		$energia=mysql_result($result,$i,"energia");



		echo(" 

$pkt
$robot
brak
$poziom
$energia



    		    ");

		$i++;

		}



?>

ale mam problem bo w tabeli roboty nie ma pola ‘pkt’. Pole ‘pkt’ jest w tabeli ‘users’. Kod wyświetla wszystko co ma wyświetlić ale przy polu pkt jest błąd.

Jak to poprawić żeby było wszystko dobrze??

Proszę pomóżcie.

http://dev.mysql.com/doc/refman/5.0/en/join.html

http://dev.mysql.com/doc/refman/5.0/en/subqueries.html

Takie coś mu na pewno nie pomoże.

Nie znam nazw tabel i kiepsko jak nie pokazałeś db, ale tutaj możesz użyć LEFT JOIN lub złączyć tablice przez odniesienie.

Mam tabele “roboty” i w niej pola:

id, czyj, nazwa, typ, level, energia, wytrzymalosc

i 2 tabela “users”:

id, login, pass, email, pkt

Pola ‘czyj’ i login mają te same dane. one łącza tabele.

Musze w pętli wyświetlić wszystkie dane i niestety nie wiem jak użyć JOIN

Nie wiem do końca co chcesz wyświetlić (bo nie podałeś co chcesz osiągnąć).

SELECT r.id, r.czyj, r.nazwa, r.typ, r.level, r.energia, r.wytrzymalosc FROM roboty r, users u WHERE r.czyj = u.login AND u.pkt > $z

Ale może o to chodzi: wyświetli te roboty, które należą do usera i ten user ma więcej punktów niż

Zapomniałem o jednej rzeczy.

W tabeli “roboty” mam jeszcze pole ‘aktywny’.

Zapytanie ma wyświetlić wszystkie roboty aktywne wszystkich userów których pkt <$pkt.

Każdy user ma tylko 1 aktywnego robota.

Wcześniej nie napisałem bo chciałem wyświetlić wszystkie ale jednak potrzebuje tylko aktywne.

Dodane 11.02.2012 (So) 12:39

i w polu ‘aktywny’ jest wartość ‘tak’ lub ‘nie’

Przerób moje zapytanie, wystarczy dodać warunek

... AND r.aktywny = 'tak'

Zakładając, że aktywność rozwiązałeś jakimś dyskryminatorem: 1, 0 / tak, nie, / t, n / etc.

Ok.

Wielkie dzięki.

A mogę zrobić takie zapytanie:

SELECT * FROM roboty r, users u WHERE r.czyj = u.login AND u.pkt > $z AND r.aktywny = 'tak'

Możesz, ale to pobiera też dane n/t usera, których w skrypcie nie wykorzystujesz, ja bym nie męczył bazy i skryptu. Zawsze wybieraj tylko te wartości (kolumny) z których korzystasz.

Aha ok czyli mam to twoje zapytanie wstawić do mojej pętli i ma działać tak??

Nie testowałem, ale powinno jak dostaniesz jakiś błąd to wklei postaram się naprawić. W ogóle piszę na Oracle, więc może coś nie działać pod MySQL.

ok zaraz zobacze

Dodane 11.02.2012 (So) 12:54

Warning: mysql_numrows() expects parameter 1 to be resource, boolean given in /home/robotica/domains/robotica.chmurka.pl/public_html/walka.php on line 61

cały czas mam ten błąd.

zrobiłem tak:

<?php 

		include('dodaj/conf.php');


		$result=mysql_query("SELECT r.typ, r.level, r.energia, r.pkt FROM roboty r, users u WHERE r.czyj = u.login AND u.pkt > $pkt");

		$num=mysql_numrows($result);

		$i=0;

		while ($i < $num) {

		$pkt=mysql_result($result,$i,"r.pkt");

		$robot=mysql_result($result,$i,"r.typ");

		$poziom=mysql_result($result,$i,"r.level");

		$energia=mysql_result($result,$i,"r.energia");



		echo("

może coś źle??

http://php.net/manual/en/function.mysql-num-rows.php

Nie brakuje podkreślenia w kodzie php w tym num_rows?

Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/robotica/domains/robotica.chmurka.pl/public_html/walka.php on line 61

dalej błąd.

r.pkt -> u.pkt user ma punkty nie robot

SELECT r.typ, r.level, r.energia, u.pkt FROM roboty r, users u WHERE r.czyj = u.log

Mam tak ale cały czas błąd wyskakuje.

Usunołem troche żeby zobaczyć czy nie zniknie błąd ale dalej tak samo. potem dodam

W users mówiłeś, że masz pole login nie log. Nie wiem już co robisz.

mam log i wszystkie nazwy sie zgadzają i cały czas błąd

Być może MySQL wymaga AS przy nadawaniu aliasów.

SELECT r.typ, r.level, r.energia, u.pkt FROM roboty AS r, users AS u WHERE r.czyj = u.log

Dalej błąd.

<?php 

		include('dodaj/conf.php');


		$result=mysql_query("SELECT r.typ, r.level, r.energia, u.pkt FROM roboty AS r, users AS u WHERE r.czyj = u.log");

		$num=mysql_num_rows($result);

		$i=0;

		while ($i < $num) {

		$pkt=mysql_result($result,$i,"u.pkt");

		$robot=mysql_result($result,$i,"r.typ");

		$poziom=mysql_result($result,$i,"r.level");

		$energia=mysql_result($result,$i,"r.energia");



		echo("

Dodane 11.02.2012 (So) 13:32

jak zrobię tak:

$result=mysql_query(“SELECT r.typ, r.level, r.energia, u.pkt FROM roboty AS r, users AS u WHERE r.czyj = u.log”) or die (‘błąd’);

to wyświetla mi blad.

Nie wiem czy to coś pomoże moze coś źle napisałem.