Autor Zpráva
Ovladač
Profil *
mám dva dotazy, z nich získávám data...jedny data ukazuju pomocí while
potřeboval aby při každým výpisu $row2[1] zkontroloval s druhým dotazem - tedy polem
něco vy smyslu tohodle


$select1 = mysql_query("SELECT * FROM `tabulka1`");
$row1 = mysql_fetch_row($select1);

$select2 = mysql_query("SELECT * FROM `tabulka2`");


while($row2 = mysql_fetch_row($select2);
{
if( $row1[1] == $row2[1]) { echo $row1[1]."ahoj"; }
else { echo $row2[3]; }
}

problém je že než načte druhý řádek, musí v tom prvním proměnnou s druhýho dotazu projít, pak půjde na druhý řádek a ten taky projde se všema polema z prvního dotazu...zkoušel jsem i foreach


while($row2 = mysql_fetch_row($select2);
{

foreach ($row1 as $pole)
{
if( $pole == $row2[1]) { echo $row1[1]."ahoj"; }
else { echo $row2[3]; }
}
}


jenže vypíše oboje, jak první podmínku tak i druhou, nevím se tím rady...pokud by byly otázky budu teď tak hodinu ještě na foru refresovat a odpovídat na jakýkoliv dotazy:-)
YoSarin
Profil
co je cílem? Mám takový pocit, že tohle by šlo zařídit přímo v SQL dotazu...
Ovladač
Profil *
cílem je zobrazit jiný text v buňce html tabulky (která v příkladu není zobrazena) v případě pokud v druhý mysql tabulce je stejný záznam jako v druhý mysql tabulce
Ovladač
Profil *
vlastně to je vytáhnutí jednoho záznamu z jedný tabulky...a druhý dotaz který dá do pole řádek z duhý tabulky a ověřit jestli ten jeden záznam není roven některým záznamům v druhý tabulce
MzM
Profil
YoSarin asi spíš myslel popsat problém slovy. Něco jako. "Mám tabulku autorů a textů a chci vypsat autora a seznam článků" než "mám dvě tabulky a chci vypsat záznam z tab jedna a tam kde údaje z tab1 souhlasí s údajem z tab2 tak vypsat seznam z tab2".
Ono je to v podstatě totéž, ale lidi spíš pochopí tu první větu a lépe pak poradí. Druhá věta je pro stroje.
Chápu, že lidi se takto moc vyjadřovat neumí, ale trénujte to. Obvykle, pokud správně stvoříte takovýto dotaz, tak už sami vidíte řešení. Nějaké kusy kódu toho většinou moc neřeši. Lidi to akorát zaměstná myšlenkama, jak to sakra autor myslel... Kór, když ty kódy neřeší problém.
Ovladač
Profil *
MzM

dobře, lidi jsou hrozný, ale vraťme se k problému
Ovladač
Profil *
prvním sql dotazem udělám z jednoho řádku v tabulce pole, pak pomocí while vypisuju jinou tabulku...a já chci aby jeden záznam v řádku, který byl vypsán pomocí while byl zkontrolován polem, pokud bude roven vypsat něco jinýho, pokud nebude tak něco druhýho

je to lepší?
Mastodont
Profil
No, YoSarin se ti pokouší naznačit, že by možná stačil jeden dotaz, který by vybral data z obou tabulek, takže bys nemusel nic porovnávat. A proto chce vědět konkrétně, o jaká data jde.

Co píšeš, je nám furt houby platný. Napiš něco jako "potřebuji projít všechny zákazníky a faktury a kontrolovat, jestli pro zákazníka byla vydána faktura" ...
Ovladač
Profil *
Mastodont


jenže jedním dotazem to nejde
Ovladač
Profil *
Mastodont

potřebju porovnat text z jedný tabulky z tabulkou v druhý...pomohlo ne? protože to jsou zbytečný informace
MzM
Profil
Ovladač, taky spoustu věcí neumím a vím, že to někdy může vypadat, že jsem úplný blbec, že se ptám na věci, které všichni ostatní znají a považují to za samozřejmost. Ale není to tak.
Pořád píšeš technický problém popsaný z hlediska tabulek. Zkus popsat problém z hlediska člověka...
Přesto že moc netuším, co potřebuejš, zkusím dát příklad (nebo několik):

tab1 bude mít id_autor a jmeno
tab2 fk_id_autor, dilo

select t1.autor, t2.dilo
from tab1 t1
join tab2 t2 on t1.id_autor = t2.fk_id_autor
order by autor, dilo

vypíše autory seřazené abecedně s jejich díly vrámci autora seřazené abecedně.

př.2
tab1 zkr, popis
(
'M', 'muz'
'Z', 'zena'
null, 'nezadano'
)
tab2 jmeno, prijmeni, pohlavi

aby to nebylo stejné:
select jmeno, prijmeni,
case
when pohlavi = 'M' or pohlavi = 'Z' then (select popis from tab1 where zkr = pohlavi)
else 'nezadano'
end as pohl
from tab2

konkrétní dotaz by se asi dal napsat i na tvůj problém, pokud ho osvětlíš tak, aby to pochopil i ten kdo to nedělal a nezná pozadí celéh problému.

...furt si ještě myslím, že to jedním dotazem jde.
Mastodont
Profil
jenže jedním dotazem to nejde

A to víš nebo to jen neumíš?
Ovladač
Profil *
Mastodont

100% vím
MzM
Profil
...ještě pořád si myslím, že to jedním dotazem jde.....
Mastodont
Profil
Já si to taky myslím., něco jako "select neco from tabulka1 where sloupec = any (select distinct sloupec2 from tabulka 2)" ...
Ovladač
Profil *
Mastodont

dejme tomu že by to takhle šlo, to ale vypíše v případě že sloupec1 == soupec2 a vypíše to while...jenže já chci aby při nerovnosti se mi vypsalo něco jinýho
Mastodont
Profil
No tak si výsledek toho dotazu hodíš do pole a pak budeš kontrolovat

if (in_array($hodnota, $pole) {echo 'ano'; } else { echo 'ne'; }

?
MzM
Profil
SQL umí konstrukci case viz příklad výš. Tam si můžeš vypsat, co chceš. Zkus se trochu snažit a přemýšlet, ne jenom říkat, že to nejde.
Ovladač
Profil *
snažil jsem se to vyjádřit co nejlépe co umím a není to tak že když hned něco nevím tak utíkám na forum, pár hodin jsem se tím trápil sám, děkuju, vyřešeno
MzM
Profil
Ovladač, ale jo, já jenom pomalu chápu a jsem z toho nervózní... :-)
Toto téma je uzamčeno. Odpověď nelze zaslat.