Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Wyświetlenie rekordów z 2 tabel
Forum PHP.pl > Forum > Przedszkole
zundap
Witam
w jaki sposób najbardziej optymalnie wyświetlić dane z 2 tabel z jakimś warunkiem i sortowaniem ?
t1 = id,nazwa
t2 = id,nazwa
bemol
Jeśli się tabele nie łączą, a z tego co widzę to nie bardzo to poprostu
  1. SELECT * FROM tab1,tab2 WHERE ... ORDER BY ... ASC
zundap
tylko że wynik tego mam taki

w bazie
t1
idd =1 nazwa marek
idd =2 nazwa mirek
idd =3 nazwa bartek
idd =4 nazwa franek

t1
idd =1 nazwa anna
idd =2 nazwa kasia

jak dam
  1. SELECT * FROM t1,t2
  2. print $nazwa <br>
  3.  
wychodzi

1.marek anna
2.marek kasia
3.mirek anna
4.mirek kasia
5.bartek anna
6.bartek kasia
7.fanek anna
8.franek kasia

A ja chcę żeby było
1.marek
2.mirek
3.bartek
4.fanek
5 kasia
6 anna
PlayKiller
SELECT * FROM t1 UNION SELECT * FROM t2
zundap
wywala błąd
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in

  1. $result = mysql_query("SELECT * FROM t1 UNION SELECT * FROM t2");
  2.  

Co tu źle smile.gif

Valdi_B
Pozwól bazie danych podpowiedzieć Ci co się dzieje:

$result = mysql_query("SELECT * FROM t1 UNION SELECT * FROM t2")
or die (mysql_error());

Inna metoda: "Wątpliwą" kwerendę wykonaj spod phpMyAdmin.
Na ogół wystarczy odczytać wyświetlony "protest" i stosownie zareagować.

Na "mojego nosa": Tabele t1 i t2 mają "niepokrywające się" atrybuty i wtedy:
1. Baza ciągnie dane z t1 - na razie OK.
2. Baza próbuje doczytać rekordy z t2.
3. Któreś kolumny z t2 "nie pasują" do listy kolumn ciągniętych z t1 i kwerenda się wywala.
Albo w t2 są jakieś "dodatkowe" atrybuty w stosunku do t1, albo odwrotnie (czegoś nie ma).
Rada: Zamiast "*" podaj jawnie listę pól do odczytu.

Jeszcze jedna uwaga: Czasem się zapomina, że UNION domyślnie eliminuje powtórzone rekordy.
Aby to zablokować zmień na UNION ALL.
zundap
The used SELECT statements have a different number of columns

Masz rację wszystko działa smile.gif
nospor
Cytat
co to znaczy
podaj jawnie listę pól do odczytu.

select t1.pole1, t1.pole2,t1.pole3.....
san32
select to co chcesz from t1,t2
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.