Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: łączenie zapytań...
Forum PHP.pl > Forum > Bazy danych > MySQL
phpuser
Potrzebuje wyświetlić rekordy z dwóch tabel jako jedne wyniki posortowane chronologincznie wg. data_dodania

pytanko do bazy:

  1. mysql_query(SELECT artykuly.data_dodania FROM akrykuly UNION SELECT slownik.data_dodania FROM slownik ) OR DIE('ERROR');


Takie zapytanie wyrzuca ERROR.
Gdzieś wyczytałem że za pomocą mysql_query() nie można łączyć zapytań.
Ma ktoś pomysła jak rozwiązać mojego problema??

Dziękuję z góry za wszystkie podpowiedzi.
Pozdrawiam PHPuser

P.S. Pisałem kod z głowy, więc może być gdzieś błąd składniowy.

Powtórzę zapytanie do bazy bez bb_codu, bo coś u mnie się źle wyświetla, wiec może dla wszystkich będzie nie czytelny:

mysql_query(SELECT artykuly.data_dodania FROM akrykuly UNION SELECT slownik.data_dodania FROM slownik ) or DIE('ERROR');
TomASS
a jaki błąd Ci wywala?

pkt 2
phpuser
Zapytanie do bazy bez BB: (bo u mnie cos szwankuje wyswietlanie w ramkach wiec moze inni tez beda mieli problem z przeczytaniem)

mysql_query(SELECT artykuly.data_dodania FROM akrykuly UNION SELECT slownik.data_dodania FROM slownik ) or DIE('ERROR');


Cytat(TomASS @ 24.07.2006, 11:41 ) *
a jaki błąd Ci wywala?

pkt 2


no ten z funkcji DIE() (czyli treść dowolnie wpisana). Ale to oznacza ze skladnia zapytania jest nie poprawna.
nospor
@phpuser TomASS podal ci linka do topicu, w ktorym masz napisane, co powiinienes dac w die(). Czsami warto czytac co ci podsylają inni...
  1. <?php
  2. mysql_query('tu twoje zapytanie') or die(mysql_error());
  3. ?>
phpuser
Cytat(nospor @ 24.07.2006, 11:54 ) *
@phpuser TomASS podal ci linka do topicu, w ktorym jak wol masz napisane, co powiinienes dac w die(). Czsami warto czytac co ci podsylają inni...
  1. <?php
  2. mysql_query('tu twoje zapytanie') or die(mysql_error());
  3. ?>



Sorki, ale nie zauważyłem że te pkt 2 w kolorze burakowym to link, tym bardziej że nie ma podkreślenia ani napisu kliknij albo cos w tym stylu:).

Wyrzuca błąd skladni tak jak mowiłem:

Something is wrong in your syntax obok 'UNION SELECT data_dodania FROM artykuly' w linii 1

Jakieś pomysły?questionmark.gif
nospor
SELECT artykuly.data_dodania FROM akrykuly
Widzisz rożnice?
phpuser
Cytat(nospor @ 24.07.2006, 12:15 ) *
SELECT artykuly.data_dodania FROM akrykuly
Widzisz rożnice?


OK. Jest literówka. Pisałem z głowy., ale na komputerze na którym mam kod sprawdziłem jeszcze raz i nie ma tej literówki w zapytaniu, a błąd się wywala.

CZY KTOŚ UŻYWAŁ Z WAS OPERATORA 'UNION' W ŁĄCZENIU ZAPYTAŃ??
Gdzieś czytałem że nie mozna uzywać złaczeń zapytań w funkcji mysql_query() i że dlatego wywala błąd?
Czy to prawda?

Wie ktoś coś na ten temat?

Dzięki za pomoc z góry.
nospor
Cytat
Gdzieś czytałem że nie mozna uzywać złaczeń zapytań w funkcji mysql_query() i że dlatego wywala błąd?
Czy to prawda?
NIe. dopiero co sprawdzalem i dziala. Moze podaj dokladnie z serwera ten kod, bo w tym co masz teraz, oprocz literowki, nic nie widze
phpuser
$query = mysql_query("SELECT slownik.data_dodania FROM slownik UNION SELECT artykuly.data_dodania FROM artykuly") or DIE(mysql_error());



Wywala błąd: Something is wrong in your syntax obok 'UNION SELECT artykuly.data_dodania FROM artykuly' w linii 1

Używam:

APACHE 1.3.31
php 4.3.9, 5.0.2
MYSQL 3.23.58

Krasnal Serv 2.7

Ale takie zapytania działają osobno:

$query = mysql_query("SELECT slownik.data_dodania FROM slownik") or DIE(mysql_error());
$query = mysql_query("SELECT artykuly.data_dodania FROM artykuly") or DIE(mysql_error());

czyli 'UNION' coś nie trybi...
nospor
Trzeba bylo tak od razu:
Cytat
MYSQL 3.23.58

A teraz zagladamy do manuala i co widzimy? :
Cytat
. UNION is available from MySQL 4.0.0 on.
phpuser
Aha heh, nie pomyślałem:P

A czy jest możliwość modyfikacji tego zapytania tak aby nie używać operatora UNION i działało pod moim obecnym SZBD MYSQL 3.23.58 questionmark.gif
nospor
No tak. sam to przeciez zrobiles:
  1. <?php
  2. $query = mysql_query("SELECT slownik.data_dodania FROM slownik") or DIE(mysql_error());
  3. $query = mysql_query("SELECT artykuly.data_dodania FROM artykuly") or DIE(mysql_error());
  4. ?>

smile.gif
zapytania jednego na tej wersji to chyba nie zrobisz... ale glowy se uciac nie dam bo nie uzywam prehistorii winksmiley.jpg
phpuser
  1. <?
  2.  
  3. echo 'Data dodania: <br/>';
  4. $query = mysql_query("SELECT slownik.data_dodania FROM slownik") or DIE(mysql_error());
  5. $query = mysql_query("SELECT artykuly.data_dodania FROM artykuly") or DIE(mysql_error());
  6.  
  7. while ($split = mysql_fetch_array($query)){
  8.  echo $split[0].'<br/>';
  9. }
  10.  
  11. ?>


Wyswietlą się tylko daty z tabeli artykuly. Nieprawdaż?,
bo jedno pytanie nadpisze sie na drugie do zmiennej $query.
nospor
sądzilem, ze domyslisz sie, iz najpierw trzeba pobrac dane z jedego mysql_query() a potem wykonac drugie i potem z niego pobrac kolejne dane. Ewentualnie wynik mysql_query() zapisz do roznych zmiennych i potem po nich jedź
phpuser
ok rozumiem. Za gorąco dzisiaj i nie trybię nawet prostych rzeczy:P

Pozdrawiam.
Phpuser
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.