Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Wyświetlenie rekordów z 2 tabel
zundap
post
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.10.2005

Ostrzeżenie: (0%)
-----


Witam
w jaki sposób najbardziej optymalnie wyświetlić dane z 2 tabel z jakimś warunkiem i sortowaniem ?
t1 = id,nazwa
t2 = id,nazwa

Ten post edytował zundap 22.03.2011, 08:32:42
Go to the top of the page
+Quote Post
bemol
post
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 29
Dołączył: 5.04.2007
Skąd: Rymanów Zdrój/Rzeszów

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
zundap
post
Post #3





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.10.2005

Ostrzeżenie: (0%)
-----


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

Ten post edytował zundap 22.03.2011, 08:33:14
Go to the top of the page
+Quote Post
PlayKiller
post
Post #4





Grupa: Zarejestrowani
Postów: 29
Pomógł: 3
Dołączył: 16.10.2008

Ostrzeżenie: (0%)
-----


SELECT * FROM t1 UNION SELECT * FROM t2
Go to the top of the page
+Quote Post
zundap
post
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.10.2005

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif)



Ten post edytował zundap 24.03.2011, 08:18:07
Go to the top of the page
+Quote Post
Valdi_B
post
Post #6





Grupa: Zarejestrowani
Postów: 107
Pomógł: 30
Dołączył: 19.02.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Valdi_B 24.03.2011, 09:46:36
Go to the top of the page
+Quote Post
zundap
post
Post #7





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 1.10.2005

Ostrzeżenie: (0%)
-----


The used SELECT statements have a different number of columns

Masz rację wszystko działa (IMG:style_emoticons/default/smile.gif)

Ten post edytował zundap 24.03.2011, 10:40:48
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
co to znaczy
podaj jawnie listę pól do odczytu.

select t1.pole1, t1.pole2,t1.pole3.....
Go to the top of the page
+Quote Post
san32
post
Post #9





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 18.09.2010

Ostrzeżenie: (20%)
X----


select to co chcesz from t1,t2
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 16:52