Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Łączenie dwóch tabelek w jedną nie działa
blendermen
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 13.11.2013

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


Witam.
Mam problem z mysql`elem.
Mam dwie identyczne tabele i chcę za pomocą jednego zapytania sql wyświetlić łączony wynik z dwóch tabel. Udało mi się to zrobić ale tylko na testowych tablicach..a na właściwych nie działa i właśnie nie wiem dlaczego. No więc tak:
To są moje testowe tablice:

  1. table1: table2:
  2.  
  3. +-------------------------+ +--------------------------------+
  4. | Name | Name
  5. --------------------------- +---------------------------------
  6. | A | | C |
  7. | B | | D |
  8. | C | | E |

I za pomocą polecenia sql

  1. mysql> SELECT name FROM (SELECT name FROM table1
  2. -> UNION SELECT name FROM table2) A;

Udało mi się poprawnie połączyć te dwie tablice jako jedna:
  1. +------+
  2. | name |
  3. +------+
  4. | A |
  5. | B |
  6. | C |
  7. | D |
  8. | E |
  9. +------+
  10. 5 rows IN SET (0.00 sec)


Ale jak zastosuje ten sam kod sql na moich właściwych już tablicach - zdjecie i zdjecie_poczekalnia, które mają taką samą strukturę nie działa.
Robie na zaliczenie klona demotywatorow. Mam dwie tablice ze zdjeciami (zdjecie i zdjecia_poczekalnia) pierwsza tabela zawiera informacje o zdjeciach
na stronie głownej a druga tabela zawiera informacje o zdjeciach w poczekalni.
Chcę połaczyć obie tabelę żeby każdy użytkownik mogł zobaczyć wszystkie zdjecią ktore wrzucił na strone -i te, które dostały się na stronę główna i te w poczekalni

Poczekalnia:
  1. +----+-----------------------------+--------+-------+-----------------+--------------------------+
  2. | id | zdjecie | userid | ocena | opis | DATA |
  3. +----+-----------------------------+--------+-------+-----------------+--------------------------+
  4. | 74 | obrazki/goldenbridge.jpg | 1 | 0 | Golden Bridge | 2013-11-20 15:26:57 |
  5. +----+--------------------------+--------+-------+---------------+-------------------------------+
  6. | 75 | obrazki/gladiator.jpg | 1 | 0 | Gladiator | 2013-11-20 15:29:57 |
  7. +----+-----------------------------+--------+-------+------------------+--------------------------+


Strona główna:
  1. +----+-------------------------------+--------+-------+-----------------+-------------------------------+
  2. | id | zdjecie | userid | ocena | opis | DATA |
  3. +----+-------------------------------+--------+-------+-----------------+--------------------------------+
  4. | 11 | obrazki/kaczor_donald.jpg | 1 | 0 | kaczka | 2013-10-20 15:26:57 |
  5. +----+-------------------------------+--------+-------+------------------+-------------------------------+
  6. | 12 | obrazki/ford.jpg | 1 | 0 | samochod | 2013-09-20 15:29:57 |
  7. +----+--------------------------------+--------+-------+-----------------+-------------------------------+
  8. | 14 | obrazki/rower.jpg | 0 | 0 | rower | 2013-08-20 15:29:57 |
  9. +----+--------------------------------+--------+-------+-----------------+-------------------------------+



A chcę uzyskać taki wynik dla usera=1

  1. +---+-------------------------------+--------+-------+------------------+---------------------------------+
  2. | id | zdjecie | userid | ocena | opis | DATA |
  3. +----+------------------------------+--------+-------+------------------+--------------------------------+
  4. | 74 | obrazki/goldenbridge.jpg | 1 | 0 | Golden Bridge | 2013-11-20 15:26:57 |
  5. +----+------------------------------+--------+-------+-------------------+-------------------------------+
  6. | 75 | obrazki/gladiator.jpg | 1 | 0 | Gladiator | 2013-11-20 15:29:57 |
  7. +----+------------------------------+--------+-------+-------------------+-------------------------------+
  8. | 11 | obrazki/kaczor_donald.jpg | 1 | 0 | kaczka | 2013-10-20 15:26:57 |
  9. +----+-------------------------------+--------+-------+------------------+-------------------------------+
  10. | 12 | obrazki/ford.jpg | 1 | 0 | samochod | 2013-09-20 15:29:57 |
  11. +----+--------------------------------+--------+-------+-----------------+---------------------------------+


Tylko, że jak wpisze
mysql> SELECT zdjecie FROM (SELECT zdjecie FROM zdjecia UNION SELECT zdjecie FROM zdjecia_pocz) A;
to otrzymuje błąd:
ERROR 1271 (HY000): Illegal mix of collations for operation 'UNION'
Przeszukałem całe google i nie mogę znaleźć informacji na ten temat.
Przepraszam za te rozjechane - nieczytelne tabelki. W moim edytorze postu są równo i nie wiem jak je wyrównać
Pozdrawiam.

Ten post edytował blendermen 20.11.2013, 19:15:01
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 558
Pomógł: 6315
Dołączył: 27.12.2004




Pola tekstowe w obu tabelach masz w innym kodowaniu. Blad mowi o tym dosc wyraznie (IMG:style_emoticons/default/wink.gif)

A tak na marginesie:czemu robisz z tego dwie tabele? Nie lepiej jedna oraz kolumna POCZEKALNIA ?
Go to the top of the page
+Quote Post
blendermen
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 13.11.2013

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


Robię dwie tabele ponieważ chcę żeby zdjęcia, które czekają w poczekalni po zatwierdzeniu były przenoszone do pierwszej tabeli jako nowe wpisy i wyświetlane na pierwszej stronie ponieważ wczytuje zdjęcia od dołu do góry z tabeli. Jeżeli wrzuciłbym wszystko do jednej i po na przykład roku czasu odhaczył zmienną poczekalnia z 1 na 0 zdjęcie byłoby gdzieś tam daleko na n-tej stronie. Tak to rozwiązałem ale myślę, że dałoby się to zrobić tak jak mówisz ale musiałbym zmienić algorytm wczytywania zdjęć. (IMG:style_emoticons/default/wink.gif)

Robiłem takie same kodowanie na obu tablicach. To złe kodowanie może taki błąd pokazywać? jak to naprawić?
Dokładnie mam takie tabelki:
  1. mysql> SHOW FULL COLUMNS FROM zdjecia;
  2. +---------+------------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
  3. | FIELD | Type | Collation | NULL | KEY | DEFAULT | Extra | Privileges | Comment |
  4. +---------+------------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
  5. | id | int(10) UNSIGNED | NULL | NO | PRI | NULL | AUTO_INCREMENT | SELECT,INSERT,UPDATE,REFERENCES | |
  6. | zdjecie | char(70) | utf8_general_ci | NO | | NULL | | SELECT,INSERT,UPDATE,REFERENCES | |
  7. | userid | int(50) | NULL | NO | | NULL | | SELECT,INSERT,UPDATE,REFERENCES | |
  8. | ocena | int(50) | NULL | NO | | NULL | | SELECT,INSERT,UPDATE,REFERENCES | |
  9. | opis | varchar(255) | utf8_general_ci | YES | | NULL | | SELECT,INSERT,UPDATE,REFERENCES | |
  10. | DATA | datetime | NULL | YES | | NULL | | SELECT,INSERT,UPDATE,REFERENCES | |
  11. +---------+------------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
  12. 6 rows IN SET (0.00 sec)
  13.  
  14. mysql> SHOW FULL COLUMNS FROM zdjecia_pocz;
  15. +---------+--------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
  16. | FIELD | Type | Collation | NULL | KEY | DEFAULT | Extra | Privileges | Comment |
  17. +---------+--------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
  18. | id | int(50) | NULL | NO | PRI | NULL | AUTO_INCREMENT | SELECT,INSERT,UPDATE,REFERENCES | |
  19. | zdjecie | char(70) | utf8_unicode_ci | NO | | NULL | | SELECT,INSERT,UPDATE,REFERENCES | |
  20. | userid | int(50) | NULL | NO | | NULL | | SELECT,INSERT,UPDATE,REFERENCES | |
  21. | ocena | int(50) | NULL | NO | | NULL | | SELECT,INSERT,UPDATE,REFERENCES | |
  22. | opis | varchar(255) | utf8_unicode_ci | YES | | NULL | | SELECT,INSERT,UPDATE,REFERENCES | |
  23. | DATA | datetime | NULL | YES | | NULL | | SELECT,INSERT,UPDATE,REFERENCES | |
  24. +---------+--------------+-----------------+------+-----+---------+----------------+---------------------------------+---------+
  25. 6 rows IN SET (0.00 sec)
  26.  

i faktycznie są inne. Poprawie i dam znać czy działa (IMG:style_emoticons/default/wink.gif)

Ten post edytował blendermen 20.11.2013, 19:55:13
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 558
Pomógł: 6315
Dołączył: 27.12.2004





Cytat
Robiłem takie same kodowanie na obu tablicach.

Naprawde nie widzisz roznicy??

utf8_general_ci
utf8_unicode_ci



Cytat
Jeżeli wrzuciłbym wszystko do jednej i po na przykład roku czasu odhaczył zmienną poczekalnia z 1 na 0 zdjęcie byłoby gdzieś tam daleko na n-tej stronie.
A jaki problem podczas zmiany z 1 na 0 zmieniac rowniez date na aktualną? Naprawde latwiej ci jest przerzucac rekord z jednej tabeli do drugiej niz zmienic date w jednym polu?
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
blendermen
post
Post #5





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 13.11.2013

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


Dziękuje za odpowiedź. Działa (IMG:style_emoticons/default/smile.gif)
Dopiero jestem początkujący w php/mysql
Gdybym miał robić tę stronę tak jak powinna wyglądać dobrze zaprojektowana strona to musiałbym wszystko od poczatku pisać (IMG:style_emoticons/default/biggrin.gif)
Pozdrawiam.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 558
Pomógł: 6315
Dołączył: 27.12.2004




Robisz zdaje sie to na zaliczenie... jak ci troja pasuje to twoja sprawa (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
blendermen
post
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 13.11.2013

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


Tak, ta strona jest na zaliczenie przedmiotu "Aplikacje internetowe". Będę musiał zrobić jeszcze jedną na licencjata i faktycznie będę musiał pomyśleć nad logicznym rozpracowaniem działania strony. Teraz jakbym Wam pokazał kod tego klona demotów to podejrzewam, że złapalibyście się za głowę. Masa kodu, na samych funkcjach, żadnego obiektowego.. miałem napisać podstawową stronę żeby działała i przepisać wszystko na obiektowy ale teraz sam już się gubię w tym kodzie (IMG:style_emoticons/default/wink.gif)
A niech będzie trója (IMG:style_emoticons/default/tongue.gif)
ale mam przynajmniej dużo frajdy z pisania mojego "pseudo-kodu" php serio jest wciągające (IMG:style_emoticons/default/smile.gif)

Ten post edytował blendermen 20.11.2013, 20:24:00
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.09.2025 - 07:23