Autor Zpráva
1ight
Profil
dobrý den chtěl jsem se zeptat koukal jsem na nějaký weby ohledně selectu a nikde neni psáno že by to bylo omezený jen na dvě tabulky zkoušel jsem napojit asi 7 tabulek s toho vypsat jen 5 záznamu ale chyba přestane u dvou tabulek nevíte prosím někdo jak to obejít?

$sql_11 = "SELECT * FROM tab1 AND tab2 AND tab3 AND tab4 .... ORDER BY date_00 DESC LIMIT 0,5";

$sql_12 = mysql_query($sql_11);
while ( $sql_13 = mysql_fetch_array( $sql_12 ) ) {
....
}
Alphard
Profil
spojení tabulek pomocí and jsem nikde neviděl, použil bych , nebo (left, right) join
Kajman_
Profil *
Přesně tak, koukal jste asi na špatné weby, pomocí and se totiž tabulky nepropojují.

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

A v případě, že nechcete tabulky provázat, ale jen vypisovat po sobě, je tu union.
http://dev.mysql.com/doc/refman/5.0/en/union.html
1ight
Profil
děkuju moc za ten odkaz mysql.. já jsem tam byl nekolikrat ale nikdy jsem se nedoklikal tady je to supr

třeba .. SELECT * FROM t1 LEFT JOIN (t2, t3, t4)
ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c

děkuju... to AND mi funguje a čárky mi to zase nebere ted to tu zkouším :) ale fakt děkuju za odpovědi jsem moc rad za jak tu říkáte nakopnuti :)
1ight
Profil
Omlouvam se AND mi nefunguje máte pravdu tedka to začlo fungovat bylo to to UNION spojenectví pro napojení tabulek Děkuju
1ight
Profil
Dobrý ráno prosím poradte mi ještě někdo mam tu příkaz

Toto funguje:
$sql_11 = "( SELECT * FROM Table01 ) UNION ( SELECT * FROM Table02 ) ";


Tohle ne:
$sql_11 = "( SELECT * FROM Table01 LEFT JOIN TableY ON Table01.data_01=Tabley.data_y ) UNION ( SELECT * FROM Table02 ) ";

Tohle taky ne:
$sql_11 = "( SELECT * FROM Table01 ) UNION ( SELECT * FROM Table02 ) LEFT JOIN TableY ON Table01.Data01=TableY.DataY";

četl jsem nekde že to byla chyba v Mysql verzi 4 neco já mám 5.0.40 a ty příklady co tam byly mi taky nefungovaly nevíte jestli nekde nedelam chybu natom mysql.com nic nepíšou o funkci LEFT JOIN ale na google jsem našel pár lidi kteří to využívaly ve svých funkcí.
Prosím o nejakou rady.. jenika ten union bez LEFT JOIN funguje dobre
nightfish
Profil
Tohle ne:
$sql_11 = "( SELECT * FROM Table01 LEFT JOIN TableY ON Table01.data_01=Tabley.data_y ) UNION ( SELECT * FROM Table02 ) ";

spousťte si tu první půlku dotazu (před union) v konzoli (phpmyadmin apod.) a podívejte se, kolik vám vrací sloupců
pak si spusťte tu druhou půku (po UNION) a také se podívejte na vracené sloupce
u union musí být počet sloupců a jejich typ v obou dotazech shodný

jinak obecně: pokud něco nefunguje, necháme si vypsat chybovou hlášku pomocí echo mysql_error(); a tu pak napíšeme do fóra spolu s příslušným kódem, který nefunguje
1ight
Profil
Ty jo to asi nedam stejný počet.. zjednodušene..

dělám uvodní stránku a zde bych chtěl zobrazit mix všech tabulek to znamena mam tabulku 1, 2, 3,4,5,6,7 a ted potřebuju napojit všechny tabulky do jednoho dotazu... a pak vyfiltrovat (kazdá tabulka ma jiný počet udaju,

tabulky jsou klonovaný takže se lehce udělat filtr a ještě k tomu potřebuju left join pro zobrazení specifikací pro určitou tabulku jak se má chovat

přávě příkaz SELECT * FROM TABLE1, TABLE2 funguje moc dobře ale TABLE3 už nebere, tabulek je 7 to je ten problém :-( a někde jsem kokal na výpis všech příkazu a tak nejak nikde neni nic podobného krome toho union který se chová stejně (ALe :) já myslel že to je schválně omezený to řešení tou čárkou proti zátěži databaze. :(


- a jinak máte pravdu je to problém když dám:
SELECT * FROM T1 LEFT JOIN neco ON T1.T1neco=neco.id_neco UNION SELECT * FROM T2

tak to píše
- #1222 - The used SELECT statements have a different number of columns
a křížek v phpmyadmin mam mezi
- LEFT JOIN neco ON T1.T1neco=neco.id_neco
- UNION SELECT *
Kajman_
Profil *
Když máte sedm tabulek, co se nemají společné sloupce, které chcete vybírat, tak použijte sedm dotazů.

Pokud např. jen nějaké sloupce v nějaké tabulce chybí, dají se jednoduše např. do výčtů sloupců přidat null sloupce na doplnění.

A možná bude nejlepší si nejdříve o mysql něco přečíst, ať po ní chcete jen to, co umí.
1ight
Profil
Já se omlouvám ja jsem tam asi někde vždy dělal chybu všem se omlouvám tady je kdyžtak info jestli někdo v budoucnu bude hledat tenhle problém

další info: http://en.wikipedia.org/wiki/Join_%28SQL%29#Full_outer_join

a doporučuju zapisovat SQL dotazy stylem

$dotaz = "
SELECT * FROM x
LEFT JOIN y ON x.x_00=y.y_k
UNION
SELECT * FROM z
LEFT JOIN y ON z.z_00=y.y_k
";

je to stoprocentně lepší než jedna dlouhá řádka
Toto téma je uzamčeno. Odpověď nelze zaslat.