[PDO]DISTINCT jak pobrać z dwóch fieldów?

Odpowiedz Nowy wątek
2019-11-06 19:31
0

witam otóż główkuje jakieś 2-3 godziny nad tym i nie wiem jak to zrobić zeby tylko 1 wynik pobrać z bazy.

oto kod:

    $Tests = $Connect_Server->prepare('SELECT DISTINCT target_id, account_id FROM website_private_messages WHERE account_id = :account_id or target_id = :account_id ORDER BY account_id DESC');
    $Tests->bindValue(':account_id', $_SESSION['logged'], PDO::PARAM_INT);
    $Tests->execute();

chcę pobrać tylko 1 wynik gdzię session['logged']
które może wystąpić w target_id i account_id w website_private_messages

może ktoś z wasz będzie wiedział co jest nie tak.

edytowany 1x, ostatnio: Programistyczny, 2019-11-06 19:33

Pozostało 580 znaków

2019-11-06 20:08
0

LIMIT 1

Miałem na myśli wiele rekordów ale wyniki nie powtarzające się, obecnie sie powtarzaja i nie wiem jak to naprawic - Programistyczny 2019-11-06 20:21
Hej! Twój post prawdopodobnie zawiera niesformatowany kod. Użyj znaczników ``` aby oznaczyć, co jest kodem, będzie łatwiej czytać. (jestem botem, ta akcja została wykonana automatycznie, prawdopodobieństwo 0.99120504) - Tasmanian Devil 2019-11-06 20:29

Pozostało 580 znaków

2019-11-06 20:32
0

Użyj GROUP BY, powinno pomóc


edytowany 1x, ostatnio: TomRZ, 2019-11-06 20:32

Pozostało 580 znaków

2019-11-07 08:57
0
TomRZ napisał(a):

Użyj GROUP BY, powinno pomóc

bez zmian dalej pokazuje więcej wyników

ma ktoś jeszcze jakieś pomysły?

Pozostało 580 znaków

2019-11-07 09:14
SELECT DISTINCT case when target_id>account_id then target_id else account_id end target_id, case when target_id>account_id then account_id else target_id end account_id FROM website_private_messages WHERE :account_id IN (target_id, account_id ) ORDER BY account_id DESC

Pozostało 580 znaków

2019-11-07 09:19
0

A jakiś przykład z danymi? Bo z Twojego opisu nie rozumiem jak ma się to zachowywać dla takich danych wejściowych:

ACCOUNT_ID | TARGET_ID
-----------+----------
1          | 1
1          | 2
2          | 1
2          | null
3          | 2

Co ma zwrócić dla logged=2 ?

Pozostało 580 znaków

2019-11-07 09:20
0
Marcin.Miga napisał(a):
SELECT DISTINCT case when target_id>account_id then target_id else account_id end target_id, case when target_id>account_id then account_id else target_id end account_id FROM website_private_messages WHERE :account_id IN (target_id, account_id ) ORDER BY account_id DESC

dobra działa jednak dzieki wielkie!

edytowany 4x, ostatnio: Programistyczny, 2019-11-07 09:22

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0