Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Wordpress][Woocommerce][mySQL] Jak pobrać jednym zapytaniem dane z kilku tabel?, Wyciąganie niezarejestrowanych użytkowników.
siutek
post 26.08.2020, 17:14:02
Post #1





Grupa: Zarejestrowani
Postów: 173
Pomógł: 1
Dołączył: 26.10.2005
Skąd: Toruń

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


Cześć wszystkim.
Mam dość skomplikowane zadanie, które mnie przerasta z powodu konieczności zbudowania złożonego zapytania SQL do bazy danych.

Buduję wtyczkę do Wordpressa. W jednej z funkcji muszę wyciągnąć WSZYSTKICH klientów, którzy zakupili konkretny wariant produktu. Niestety ci klienci dokonywali zakupów bez rejestracji, dlatego na próżno szukać ich w tabeli WP_USERS, tam ich nie ma.
Zatem jedyne co mogę zrobić, to poszukać wszystkich zamówień, w których dokonano zakupu WARIANTU produktu o danym ID, i to się ogólnie udaje:

  1. SELECT order_items.order_id FROM wp_woocommerce_order_items AS order_items LEFT JOIN wp_woocommerce_order_itemmeta AS order_item_meta ON order_items.order_item_id = order_item_meta.order_item_id LEFT JOIN wp_posts AS posts ON order_items.order_id = posts.ID WHERE posts.post_type = 'shop_order' AND posts.post_status IN ( 'wc-completed' ) AND order_items.order_item_type = 'line_item' AND order_item_meta.meta_key = '_variation_id' AND order_item_meta.meta_value = '61840'


gdzie 61840 to właśnie ID wariantu produktu, który mnie interesuje. Powyższe zapytanie elegenacko zwraca ID wszystkich zamówień zawierających wskazany wariant.

Jednak muszę zbudować listę klientów, którzy dokonali takiego zakupu. Potrzebuję Imienia, nazwiska oraz adresu e-mail.
I tu już zaczynają się schody. Nie wiem jak zmodyfikować powyższe zapytanie, aby z IDkami zamówień otrzymać również Imię, Nazwisko i adres e-mail klienta z tego zamówienia.

te informacje znajdują się w tabeli wp_postmeta, wygląda to mniej więcej tak:

Kod
  meta_id |     post_id     |        meta_key      |       meta_value
----------------------------------------------------------------------------
   xxxx   |  id_zamowienia  |    _billing_email    | adresemail@klienta.pl
   xxxx   |  id_zamowienia  | _billing_first_name  |        Franek
   xxxx   |  id_zamowienia  | _billing_last_name   |        Kimono


takich wierszy jest oczywiście znacznie więcej, ale interesują mnie dokładnie te trzy przypisane do danego zamówienia. Id zamówienia zwraca zapytanie umieszczone powyżej.

Mógłbym oczywiście w pętli sprawdzić każde zamówienie po kolei, ale nie widzę sensu, by tak katować serwer odpytując go kilkaset razy, skoro można stworzyć jedno zapytanie, które to ogarnie.

czyli zamiast tablicy z samymi IDkami zamówień chciałbym uzyskać tablicę z IDkami zamówień, oraz przypisanymi do nich adresami email, imionami i nazwiskami kupujących.

Zdaję sobie sprawę, że moje pytanie jest specyficzne i najpewniej będą w stanie pomóc mi tylko osoby, które głęboko siedzą w Wordpresie i znają jego logikę bazy.
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: 29.03.2024 - 12:40