Forum Gry Hobby Sprzęt Rozmawiamy Archiwum Regulamin

Forum: MySQL - pomoc nr3? :)

27.04.2012 11:26
legrooch
1
legrooch
240
MPO Squad Member

MySQL - pomoc nr3? :)

Witam,

Potrzebuję z poniższej tabeli wybrać rekordy, które:
- jako pole fieldid mają wartość 1, a w data I, II lub III
- dla tych rekordów wyświetlić wszystkie "sparowane" rekordy, które w fieldid mają wartość 2 i pokazać ich data

Zamotane, ale przykład tego, czego oczekuję poniżej

1) Wynik do osiągnięcia:
rok, grupa
III,A1
I, B3
II,C1
II,C2

Pominąłem tu ukończone,'', ponieważ nie spełnia warunku fieldid

2) Wybierać muszę z tabeli:
id, userid, fieldid, data
1, 33, 1, III
2, 33, 2, A1
3, 34, 1, I
4, 34, 2, B3
5, 35, 1, ukończone
6, 35, 2,
7, 36, 1, II
8, 36, 2, C1
9, 37, 1, II
10, 37, 2, C2

27.04.2012 11:31
wysiak
2
odpowiedz
wysiak
95
tafata tofka

Auc, juz chyba kumam, skomplikowane. Zaraz pomysle...

27.04.2012 11:43
legrooch
3
odpowiedz
legrooch
240
MPO Squad Member

wysiu ==> Mam po prostu sporą część śmieci w fieldid i data.
Muszę zebrać listę rocznikó i grup na nich, tylko I, II i III. Tyle, że ręcznie może być męczarnia - powyżej 1.3 mln rekordów...

27.04.2012 11:54
4
odpowiedz
ElNinho
159
STROH 80

a co znaczy sparowane? ten sam userid?

select t1.data, t2.data
from tabela t1, tabela t2
where t1.userid=t2.userid
and t1.fieldid = 1
and t2.fieldid = 2
and t1. data in ('I', 'II', 'III')

proszę :)

27.04.2012 12:03
legrooch
👍
5
odpowiedz
legrooch
240
MPO Squad Member

Kurde, Ty to chłop jesteś :) Dzięki wielkie :)

Potrzebowałem jak napisałem wysiowi listy roczników i grup na nich dostępnych. Zadanie wykonane, czas na obróbkę danych i wywalanie śmieci.

27.04.2012 14:24
legrooch
6
odpowiedz
legrooch
240
MPO Squad Member

Dobra, doszła mi jeszcze jedna składowa.

We wzorcowej tabeli mam userid. Mam tabelę user, w której mam id, imię, nazwisko.
Potrzebuję wyświetlić wszystko na zasadzie

33, Marian, Nowak, III, A1
34, Jan, Kowalczyk, I, B3
36, Anna, Nowak, II, C1
37, Jan, Kowal, II, C2

pomocy :)

27.04.2012 14:30
wysiak
7
odpowiedz
wysiak
95
tafata tofka

select user.userid, user.imie, user.nazwisko, t1.data, t2.data
from tabela t1, tabela t2, user
where t1.userid=t2.userid
and t1.userid = user.userid
and t1.fieldid = 1
and t2.fieldid = 2
and t1. data in ('I', 'II', 'III')

27.04.2012 14:41
legrooch
8
odpowiedz
legrooch
240
MPO Squad Member

Super, dzięki :)

Ostatnie pytanie - nie mogę znaleźć w dokumentacji MySQL łączenia kolumn w select.
Nie idzie t1.data + ' ' + t2.data, & nie działa, nawiasy nic nie dają.

27.04.2012 14:43
legrooch
9
odpowiedz
legrooch
240
MPO Squad Member

Dobra, poszło Concatem.

27.04.2012 14:43
wysiak
10
odpowiedz
wysiak
95
tafata tofka

Nie uzywam mYSqla, ale sprobuj
t1.data||' '||t2.data

27.04.2012 14:43
Katane
11
odpowiedz
Katane
170
Useful_Idiot_
27.04.2012 15:43
legrooch
12
odpowiedz
legrooch
240
MPO Squad Member

Tak, chodziło o Concat jak pisałem w [9].

Brakuje mi jeszcze jednego dobrego i szybkiego rozwiązania do weryfikacji istnienia rekordu o określonych wartościach, po czym insert lub update.....

If nie idzie z selectem :/

27.04.2012 16:06
13
odpowiedz
ElNinho
159
STROH 80

a dokładniej ? :)

27.04.2012 16:10
14
odpowiedz
zanonimizowany251643
134
Legend

legrooch ale o co chodzi ? Brzmi banalnie, pewnie jest jakiś catch

27.04.2012 16:19
Katane
15
odpowiedz
Katane
170
Useful_Idiot_

UPDATE X SET zmiany WHERE id in (SELECT id FROM X WHERE warunki)

27.04.2012 18:50
legrooch
16
odpowiedz
legrooch
240
MPO Squad Member

Nevermind, znów obszedłem kodem :)

Katane - update nie zrobi insertu nowego rekordu. W tym jest problem. Generalnie w trzech kolumnach mam niezmienne dane, reszta mnie interesuje. I problem stanowi aktualizacja bądź dodanie właśnie w pozostałych. Ale na to mam jeszcze czas, bo obecne skończyłem już.

Forum: MySQL - pomoc nr3? :)