Autor | Zpráva | ||
---|---|---|---|
1ight Profil |
#1 · Zasláno: 11. 2. 2008, 21:56:43
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 |
#2 · Zasláno: 11. 2. 2008, 21:59:02
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 |
#4 · Zasláno: 11. 2. 2008, 22:06:47
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 |
#5 · Zasláno: 11. 2. 2008, 22:48:45
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 |
#6 · Zasláno: 12. 2. 2008, 01:38:07
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 |
#7 · Zasláno: 12. 2. 2008, 08:30:42
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 |
#8 · Zasláno: 12. 2. 2008, 13:33:34
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 * |
#9 · Zasláno: 12. 2. 2008, 13:41:17
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 |
#10 · Zasláno: 12. 2. 2008, 15:13:12 · Upravil/a: 1ight
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 |
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0