Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Połączenie wyniku selecta wzgledem id
KotWButach
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


Witam, mam prośbę czy ktoś wie jak można połączyć wynik po ID?
  1.  
  2. SELECT * FROM `wp_postmeta` WHERE `meta_key` = 'date_uninstall' OR `meta_key` = 'date_install'
  3.  



Wynik takiego zapytania:


id_date | meta_key | somethingelse
35 | date_uninstall | 1234123423
... | ... | ...
35 | date_install | 989024234




Chciałbym by te dane się połączyły pod innymi nazwami tabel.

35 date_uninstall 1234123423 date_install 989024234

Czy tak się da?

Ten post edytował KotWButach 7.06.2017, 22:13:02
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
leonpro778
post
Post #2





Grupa: Zarejestrowani
Postów: 146
Pomógł: 19
Dołączył: 1.03.2012

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


Da się. Chyba tak na szybko to przychodzi mi INNER JOIN. Rozumiem, że wszystko jest w JEDNEJ tabeli czy jest kilka tabel?
Go to the top of the page
+Quote Post
KotWButach
post
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


To jest jedna tabela, więcej jedna kolumna sad.gif

udało mi się coś takiego ale mam kilkukrotnie więcej wyników sad.gif bo bierze zbyt dużo rekordów... W zasadzie to mam wrażenie mam o kilkaset rekordów za dużo... zamiast kilku.
  1. select `end_date`, `certyficate_date`
  2. from `wp_postmeta`
  3. inner join (SELECT `meta_value` AS `end_date`, `post_id` AS `end_id` FROM `wp_postmeta` WHERE `meta_key` = 'date_uninstall_certyficate') AS A
  4. inner join (SELECT `meta_value` AS `certyficate_date`, `post_id` AS `cert_id` FROM `wp_postmeta` WHERE `meta_key` = 'id_certyfiacte') AS B
  5. on A.`end_id` = B.`cert_id`
  6.  


Ten post edytował KotWButach 9.06.2017, 21:51:17
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Najpierw pokazałeś przykład gdzie pole łączącym wydawało się id_date, a rekordy o tym samym id_date były dwa, jeden z wartością "date_uninstall", drugi z wartością "date_install".
W drugim przykładzie łączysz po end_id i cert_id, a wybierasz z wartością "date_uninstall_certyficate" oraz "id_certyfiacte".

W jakim polu jest wartość łącząca wspólne wartości? Czy wspólne wartości są dwie czy więcej, i jakie to wartości?


--------------------
Go to the top of the page
+Quote Post
KotWButach
post
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


Wybaczcie, trochę się po prostu baza zmodyfikowała,

kolumną która jest wspólna to post_id, są tam id postu od wordpress'a a więc zarówno
date_uninstall_certyficate jak i id_certyfiacte spotykają się pod tym samym id. Problem w tym że pobiera mi z 500 rekordów zamiast około 30.
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


Pobierze tyle ile jest rekordów z "date_uninstall_certyficate" razy ilość rekordów z "id_certyficate" - powstaje iloczyn kartezjański. To akurat nie jest nadzwyczajna sytuacja.
Musisz dodać GROUP BY post_id.


--------------------
Go to the top of the page
+Quote Post
KotWButach
post
Post #7





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

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


Dziękuje smile.gif to naprawdę zadziałało.
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 Aktualny czas: 22.08.2025 - 06:05