Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dwie tabele, jeden warunek...
MichuM.
post 18.09.2003, 15:54:26
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.10.2002

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


Widze pod spodem podobny topic, jednak nie rozwiazuje on mojego problemu.... Otoz mam 2 tabele:
1: historia
2: teleadresowe

Mam za zadanie wyciagnac wszystkie dane z tabeli "teleadresowe" na podstawie warunku ktory jest spelniony w tabeli historia.

W tabeli "historia" przechowuje dane i date dotyczace spotkan, a w tabeli "teleadresowe" mam dane klienta ( telefon, adres itp ).
I teraz mam formularz w ktorym wpisuje date i chce aby wyswietlili mi sie najpierw dane klienta, a pozniej spotkania... robie to tak
Kod
select * from teleadresowe, historia where data = $data order by id desc

wynik jest jednak bledny - wyswietla wszystkie rekordy...nie zaleznie od wpisanej daty...

Reasumujac:
Jak wyswietlic rekord z tabeli teleadresowe ( mam wspolne id w obu tabelach ) na podstawie zapytania o date spotkania z tabeli historia ?

Pozdrawiam
Go to the top of the page
+Quote Post
MichuM.
post 18.09.2003, 15:55:48
Post #2





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.10.2002

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


Czy taki select ma sens ?

Kod
$result = mysql_query("SELECT * FROM teleadresowe, historia WHERE historia.data_kontaktu like '$data_kontaktu' and teleadresowe.id = historia.id;");
Go to the top of the page
+Quote Post
adwol
post 18.09.2003, 16:05:44
Post #3





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

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


Cytat
Czy taki select ma sens ?

Kod
$result = mysql_query("SELECT * FROM teleadresowe, historia WHERE historia.data_kontaktu like '$data_kontaktu' and teleadresowe.id = historia.id;");

Zależy co chcesz uzyskać. Pokaż definicję obu tabel i powiedz co to jest za warunek który jest spelniony w tabeli historia.
Go to the top of the page
+Quote Post
Jabol
post 18.09.2003, 16:11:55
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


1. jak robisz czysty sql to używaj BBCODE - SQL.
2. a nie powinienes zamienić warunków kolejnością ?
Go to the top of the page
+Quote Post
uboottd
post 19.09.2003, 09:34:12
Post #5





Grupa: Zarejestrowani
Postów: 384
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Chorzow

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


Jabol: ad.2 Kwestia dbms-a a w zasadzie jego optimizera. Np. Mysql i tak sobie te warunki ustawi w takiej kolejnosci zeby miec jak najmniej zabawy z zapytaniem. Inne dbms-y pewnie tez tak robia (w koncu to dosc oczywiste) wiec kolejnosc warunkow nie ma znaczenia.
Go to the top of the page
+Quote Post
MichuM.
post 19.09.2003, 17:56:07
Post #6





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.10.2002

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


w sumie robilem to tak i dziala:
[sql:1:cc82ffd316]


$result = mysql_query("SELECT * FROM teleadresowe, historia WHERE historia.data_kontaktu like '$data_kontaktu' and teleadresowe.id = historia.id ;");

[/sql:1:cc82ffd316]

i jak zwykle powstal problem.. otoz jest tak ze jesli $data kontaktu i zmienna id sie pokrywa to wsywietla sie wynik i jest super... ale jesli mam w tabeli mam dwa razy wspolne $data_kontaktu i id ( normalna sytuacja w sumie ) to wyswietlaja mi sie te SAME dane z tabeli teleadresowaj dwukrotnie...jak zrobic aby bylo mozliwe dla danego zlaczenia $data_kontaktu = id wywolanie danych tylko raz ? limit chyba nie wchodzi w rachube.
Go to the top of the page
+Quote Post
Jabol
post 19.09.2003, 18:04:06
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

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


Cytat
Jabol: ad.2 Kwestia dbms-a a w zasadzie jego optimizera. Np. Mysql i tak sobie te warunki ustawi w takiej kolejnosci zeby miec jak najmniej zabawy z zapytaniem. Inne dbms-y pewnie tez tak robia (w koncu to dosc oczywiste) wiec kolejnosc warunkow nie ma znaczenia.
ale przyznasz, ze lepiej sie czyta kod w ktorym join jest na pierwszej pozycji ( o ile nie uzyto slowa kluczowego - calkowiete niebo )?

ps. MichuM. : moja rada. zmien nazwy kolumn albo listuj je odreczie ( aliasując ) a nie za pomoca *, ponieważ teraz możesz mieć kolizje nazw.
Go to the top of the page
+Quote Post
NaC
post 19.09.2003, 20:18:56
Post #8





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.09.2003

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


Cytat
w sumie robilem to tak i dziala:
[sql:1:b93fb2088a]


$result = mysql_query("SELECT * FROM teleadresowe, historia WHERE historia.data_kontaktu like '$data_kontaktu' and teleadresowe.id = historia.id ;");

[/sql:1:b93fb2088a]

i jak zwykle powstal problem.. otoz jest tak ze jesli $data kontaktu i zmienna id sie pokrywa to wsywietla sie wynik i jest super... ale jesli mam w tabeli mam dwa razy wspolne $data_kontaktu i id ( normalna sytuacja w sumie ) to wyswietlaja mi sie te SAME dane z tabeli teleadresowaj dwukrotnie...jak zrobic aby bylo mozliwe dla danego zlaczenia $data_kontaktu = id wywolanie danych tylko raz ? limit chyba nie wchodzi w rachube.


Dzisiaj mialem podobny problem i zarejestrowalem sie na tym forum, aby ktos mi pomogl, ale nim na maila przyszla aktywacja sam zdarzylem rebusa rozwiazac, tyle ze nie mialem takich samych numerkow id...ale za to takie same pola 'nazwa' i to rozwiazalo problem (bo niestety nie wyswietly sie zdublowane wyniki, tylko wielokrotnie zwielokrotnione ;).
Tak czy inaczej, na wstepie zaznacze, ze jestem poczatkujacym i nie mam pojecia, czy to pomoze, ale jezeli Ci sie wyniki dubluja, to maja taki sam ID, wiec GROUP powinno rozwiazac problem :

[sql:1:b93fb2088a]


$result = mysql_query("SELECT * FROM teleadresowe, historia WHERE historia.data_kontaktu like '$data_kontaktu' and teleadresowe.id = historia.id GROUP BY id");

[/sql:1:b93fb2088a]
Go to the top of the page
+Quote Post
MichuM.
post 19.09.2003, 21:56:31
Post #9





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 9.10.2002

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


heh dokladnie o to chodzilo smile.gif, dziekuje wszystkim.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.06.2025 - 12:29