|
Zapytanie MySQL ??cz?ce 3 tabele
|
| Adam Stalica |
Dodany dnia 26.08.2011 21:01:32
|

Pocz?tkuj?cy

Postów: 213 Pomógł: 13
v7.02.03 Data rejestracji: 05.08.2010 17:24
|
Witam,
robi? obecnie wtyczk? reklamow? i napotka?em na problem, a mianowicie mam 3 tabele:
Przedstawiam zrzuty struktury tabel:
Tabela 1 & 2 (One maj? t? sam? struktur?):

Tabela 3:

i potrzebuj? napisa? zapytanie MySQL, które wy?wietli mi wszystkie rekordy z tych 3 tabel wed?ug button_order ASC <tzn. wed?ug ustawionej kolejno?ci>...
Bardzo prosz? o pomoc i za ka?d? nawet najmniejsz? z góry dzi?kuj? 
Pozdrawiam
Adam 
PW od moderatora:
- Od?wie?enie Tematu - Pieka 03.09.2011 23:21
Edytowane przez Adam Stalica dnia 27.08.2011 13:10:17
Witam 
|
| |
|
|
| W?cibski Go?? |
Dodany dnia 24.10.2025 17:55:33
|
Pan Kontekstualny
Postów: n^x
Data rejestracji: Zawsze
|
|
| IP: localhost |
|
|
| kefirek |
Dodany dnia 26.08.2011 22:08:30
|

Zaawansowany

Postów: 1191 Pomógł: 418 Ostrzeżeń: 1
v6.00.xxx Data rejestracji: 06.04.2008 21:59
|
SELECT * FROM (
SELECT * FROM tabela1
USNION ALL
SELECT * FROM tabela2
USNION ALL
SELECT * FROM tabela3
) AS tab ORDER BY button_order ASC
|
| |
|
|
| Adam Stalica |
Dodany dnia 26.08.2011 22:16:25
|

Pocz?tkuj?cy

Postów: 213 Pomógł: 13
v7.02.03 Data rejestracji: 05.08.2010 17:24
|
Co? niestety nie ?mig?o:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALL SELECT * FROM adam_stalica_buttons_internet USNION ALL SELECT * FROM adam' at line 3
A da?em taki kod:
$result = dbquery("SELECT * FROM (
SELECT * FROM ".DB_BUTTONS_SERWER."
USNION ALL
SELECT * FROM ".DB_BUTTONS_INTERNET."
USNION ALL
SELECT * FROM ".DB_BUTTONS_SCRIPT."
) AS tab ORDER BY button_order ASC");
Witam 
|
| |
|
|
| kefirek |
Dodany dnia 27.08.2011 01:04:26
|

Zaawansowany

Postów: 1191 Pomógł: 418 Ostrzeżeń: 1
v6.00.xxx Data rejestracji: 06.04.2008 21:59
|
Adam Stalica napisa?(a):
Co? niestety nie ?mig?o:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ALL SELECT * FROM adam_stalica_buttons_internet USNION ALL SELECT * FROM adam' at line 3
A da?em taki kod:
$result = dbquery("SELECT * FROM (
SELECT * FROM ".DB_BUTTONS_SERWER."
USNION ALL
SELECT * FROM ".DB_BUTTONS_INTERNET."
USNION ALL
SELECT * FROM ".DB_BUTTONS_SCRIPT."
) AS tab ORDER BY button_order ASC");
Zrobi?em literówk? zamiast USNION ALL daj UNION ALL
czyli
$result = dbquery("SELECT * FROM (
SELECT * FROM ".DB_BUTTONS_SERWER."
UNION ALL
SELECT * FROM ".DB_BUTTONS_INTERNET."
UNION ALL
SELECT * FROM ".DB_BUTTONS_SCRIPT."
) AS tab ORDER BY button_order ASC");
|
| |
|
|
| Adam Stalica |
Dodany dnia 27.08.2011 12:52:23
|

Pocz?tkuj?cy

Postów: 213 Pomógł: 13
v7.02.03 Data rejestracji: 05.08.2010 17:24
|
Niestety kolejny b??d mi wy?wietli?o:
The used SELECT statements have a different number of columns
Je?li dam taki:
$result = dbquery("SELECT * FROM (
SELECT * FROM ".DB_BUTTONS_SERWER."
UNION ALL
SELECT * FROM ".DB_BUTTONS_INTERNET."
) AS tab ORDER BY button_order ASC");
To te 2 tabele dzia?aj? <One maj? t? sam? budow? tak jak jest pokazane na 1 screenie>, ale jak ju? dodam 3 tabel? to wy?wietla si? b??d co poda?em w code podejrzewam, ?e przez to, ?e ma inn? budow?...
Prosz? o dalsze wskazówki jak to rozwi?za?...
Witam 
|
| |
|
|
| kefirek |
Dodany dnia 27.08.2011 15:20:27
|

Zaawansowany

Postów: 1191 Pomógł: 418 Ostrzeżeń: 1
v6.00.xxx Data rejestracji: 06.04.2008 21:59
|
Bo w tych 3 tabelach liczba kolumn musi by? ta sama i nazwy kolumn te same je?li chcesz u?y? *. Widocznie w trzeciej tabeli jest wi?cej kolumn wiec zamiast * podajesz nazwy kolumn oczywi?cie musz? istnie? w 3 tabelach i mie? te same. Np
$result = dbquery("SELECT * FROM (
SELECT button_name, button_order FROM ".DB_BUTTONS_SERWER."
UNION ALL
SELECT button_name, button_order FROM ".DB_BUTTONS_INTERNET."
UNION ALL
SELECT button_name, button_order FROM ".DB_BUTTONS_SCRIPT."
) AS tab ORDER BY button_order ASC");
Edytowane przez Drecha dnia 27.08.2011 15:32:42
|
| |
|
|
| Adam Stalica |
Dodany dnia 27.08.2011 15:36:47
|

Pocz?tkuj?cy

Postów: 213 Pomógł: 13
v7.02.03 Data rejestracji: 05.08.2010 17:24
|
Jak zwykle jeste? niezawodny 
Dzi?kuj? bardzo za pomoc 
Doszed?em dzi? troch? wcze?niej do tego co mi teraz napisa?e?, ale my?la?em, ?e podasz jakie? rozwi?zanie, ?e b?d? móg? wybra? wszystkie kolumny ;p
Jeszcze raz dzi?kuj? bardzo za pomoc 
Oczywi?cie zas?u?one pomóg? daj?...
Pozdrawiam
Adam
Witam 
|
| |
|
|
| kefirek |
Dodany dnia 27.08.2011 18:19:52
|

Zaawansowany

Postów: 1191 Pomógł: 418 Ostrzeżeń: 1
v6.00.xxx Data rejestracji: 06.04.2008 21:59
|
Mo?na pobra? wszystkie ale wtedy stosujesz np nazwa_kolumny AS button_name tak by si? nazwy zgadza?y w ka?dej z tabel jakby? pokaza? jakie kolumny masz w 3 tabeli to co? by si? zaradzi?o |
| |
|
|
| Adam Stalica |
Dodany dnia 28.08.2011 12:10:52
|

Pocz?tkuj?cy

Postów: 213 Pomógł: 13
v7.02.03 Data rejestracji: 05.08.2010 17:24
|
W 1 po?cie masz screena z 3 tabeli
Edytowane przez Pieka dnia 28.08.2011 16:52:10
Witam 
|
| |
|
|
| kefirek |
Dodany dnia 28.08.2011 13:53:48
|

Zaawansowany

Postów: 1191 Pomógł: 418 Ostrzeżeń: 1
v6.00.xxx Data rejestracji: 06.04.2008 21:59
|
Nie sprawdza?em ale powinno dzia?a?
$result = dbquery("SELECT * FROM (
SELECT
button_id, button_order, button_name, NULL AS button_script, button_image, button_height, button_width,
button_link, button_alt, button_limit_clicks, button_clicks, button_limit_views,
button_views, button_user, button_pass
FROM ".DB_BUTTONS_SERWER."
UNION ALL
SELECT
button_id, button_order, button_name, NULL AS button_script, button_image, button_height, button_width,
button_link, button_alt, button_limit_clicks, button_clicks, button_limit_views,
button_views, button_user, button_pass
FROM ".DB_BUTTONS_INTERNET."
UNION ALL
SELECT
button_id, button_order, button_name, button_script, NULL AS button_image, NULL AS button_height, NULL AS button_width,
NULL AS button_link, NULL AS button_alt, NULL AS button_limit_clicks, NULL AS button_clicks, button_limit_views,
button_views, button_user, button_pass
FROM ".DB_BUTTONS_SCRIPT."
) AS tab ORDER BY button_order ASC");
|
| |
|
|
| Adam Stalica |
Dodany dnia 28.08.2011 14:14:14
|

Pocz?tkuj?cy

Postów: 213 Pomógł: 13
v7.02.03 Data rejestracji: 05.08.2010 17:24
|
Jak zawsze jeste? niezawodny ;)
Dzia?a ;)
Bardzo Ci dzi?kuj? i oczywi?cie kolejne zas?u?one pomóg? daj? ;)
Pozdrawiam
Adam ;)
Po??czony z 28 sierpie? 2011 14:24:
A jeszcze mam jedno pytanko...
Pomo?esz mi po??czy? teraz to:
$result = dbquery("SELECT * FROM (
SELECT
button_id, button_order, button_name, NULL AS button_script, button_image AS button_image_internet, button_height, button_width,
button_link, button_alt, button_limit_clicks, button_clicks, button_limit_views,
button_views, button_user, button_pass
FROM ".DB_BUTTONS_SERWER."
UNION ALL
SELECT
button_id, button_order, button_name, NULL AS button_script, button_image AS button_image_serwer, button_height, button_width,
button_link, button_alt, button_limit_clicks, button_clicks, button_limit_views,
button_views, button_user, button_pass
FROM ".DB_BUTTONS_INTERNET."
UNION ALL
SELECT
button_id, button_order, button_name, button_script, NULL AS button_image, NULL AS button_height, NULL AS button_width,
NULL AS button_link, NULL AS button_alt, NULL AS button_limit_clicks, NULL AS button_clicks, button_limit_views,
button_views, button_user, button_pass
FROM ".DB_BUTTONS_SCRIPT."
) AS tab");
Z kodem:
$result = dbquery("SELECT a.*, b.*
FROM ".DB_BUTTONS_SERWER." a
LEFT JOIN ".DB_PREFIX."buttons_wyswietlanie b
ON b.nr_buttona=a.button_order
WHERE ip='".USER_IP."'
");
$result = dbquery("SELECT a.*, b.*
FROM ".DB_BUTTONS_INTERNET." a
LEFT JOIN ".DB_PREFIX."buttons_wyswietlanie b
ON b.nr_buttona=a.button_order
WHERE ip='".USER_IP."'
");
$result = dbquery("SELECT a.*, b.*
FROM ".DB_BUTTONS_SCRIPT." a
LEFT JOIN ".DB_PREFIX."buttons_wyswietlanie b
ON b.nr_buttona=a.button_order
WHERE ip='".USER_IP."'
");
Musz? ka?dej tabeli z osobna nadawa? alians, a nast?pnie wszystko ??czy? ze sob? przez LEFT JOIN czy mo?na to jako? ?atwiej zrobi??
Edytowane przez Adam Stalica dnia 28.08.2011 14:33:38
Witam 
|
| |
|
|
| kefirek |
Dodany dnia 28.08.2011 16:43:27
|

Zaawansowany

Postów: 1191 Pomógł: 418 Ostrzeżeń: 1
v6.00.xxx Data rejestracji: 06.04.2008 21:59
|
Nie sprawdza?em ale powinno zadzia?a?
$result = dbquery("SELECT *, b.* FROM (
SELECT
button_id, button_order, button_name, NULL AS button_script, button_image AS button_image_internet, button_height, button_width,
button_link, button_alt, button_limit_clicks, button_clicks, button_limit_views,
button_views, button_user, button_pass
FROM ".DB_BUTTONS_SERWER."
UNION ALL
SELECT
button_id, button_order, button_name, NULL AS button_script, button_image AS button_image_serwer, button_height, button_width,
button_link, button_alt, button_limit_clicks, button_clicks, button_limit_views,
button_views, button_user, button_pass
FROM ".DB_BUTTONS_INTERNET."
UNION ALL
SELECT
button_id, button_order, button_name, button_script, NULL AS button_image, NULL AS button_height, NULL AS button_width,
NULL AS button_link, NULL AS button_alt, NULL AS button_limit_clicks, NULL AS button_clicks, button_limit_views,
button_views, button_user, button_pass
FROM ".DB_BUTTONS_SCRIPT."
) AS tab
LEFT JOIN ".DB_PREFIX."buttons_wyswietlanie b
ON b.nr_buttona=tab.button_order
WHERE ip='".USER_IP."' ORDER BY button_order DESC
");
|
| |
|
|
| Adam Stalica |
Dodany dnia 03.09.2011 23:21:40
|

Pocz?tkuj?cy

Postów: 213 Pomógł: 13
v7.02.03 Data rejestracji: 05.08.2010 17:24
|
Nie mog?o by? inaczej - dzia?a ;)
Nie mog? ju? da? Ci kolejnego pomóg?, dlatego prosz? administracj? o danie zas?u?onego pomóg? dla u?ytkownika @kefirek ;)
Pozdrawiam i @kefirek dzi?kuj? Ci bardzo za pomoc...
EDIT:
Jeszcze jedno pytanko:
Czy mo?na ten kod ?atwiej zapisa??
$result = dbquery("SELECT * FROM (
SELECT
button_id
FROM ".DB_BUTTONS_SERWER."
UNION ALL
SELECT
button_id
FROM ".DB_BUTTONS_INTERNET."
UNION ALL
SELECT
button_id
FROM ".DB_BUTTONS_SCRIPT."
) AS tab");
$kolejnosc = dbrows($result)+1;
Ten kod dzia?a, ale czy jest w miar? optymalny?
Chodzi w nim o to, aby odczyta? najwi?ksz? warto?? button_order i doda? do niej 1 ;)
Pozdrawiam
Adam ;)
Edytowane przez Adam Stalica dnia 04.09.2011 22:05:35
Witam 
|
| |
|