Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Różnica między mysql 4 i 5
100jek
post 24.09.2008, 14:07:43
Post #1





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

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


Witam,

Mam problem ponieważ mam zapytanie wybierające spinające 9 tabel, które działa na mysql 4.x.x natomiast ta sama struktura i dane w mysql 5 nie zwraca poprawnych wyników (takich jak w 4.x.x) tylko część rekordów. W związku z tym mam pytanie czym to może być spowodowane?

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
misiek172
post 24.09.2008, 15:01:08
Post #2





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


http://forum.php.pl/index.php?showtopic=95...mp;#entry478042 np. taka


--------------------
zmoderowano - waga i rozmiar
Go to the top of the page
+Quote Post
nevt
post 24.09.2008, 15:27:34
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


Może to być wynik błędnej składni JOIN która była dopuszczalna w MySQL4 a nie jest w MySQL5 (tzn. to samo zapytanie z wieloma JOIN może byc inaczej zinterpretowane przez obie wersje).


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
100jek
post 25.09.2008, 17:13:50
Post #4





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

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


@nevt całkiem możliwe.

Chciałbym z takiej tabeli (wizualizacja)

marki |model |czesc1 |czesc2 |czesc3
-------------------------------------------------------
marka1 | model1 | uklad1 | uklad2 | null
_______|______|_______| uklad3 |
-------------------------------------------------------
marka1 | model2 | null | null | uklad4
-------------------------------------------------------
marka2 | model3 | uklad5 | null | uklad6


pobrać dane w następującej postaci

marka1 model1 czesc1 uklad1
marka1 model1 czesc2 uklad2
marka1 model1 czesc2 uklad3
marka1 model1 czesc3 null
marka1 model2 czesc1 null
marka1 model2 czesc2 null
marka1 model2 czesc3 uklad4
marka2 model3 czesc1 uklad5
marka2 model3 czesc2 null
marka2 model3 czesc3 uklad6

Jak takie za pytanie powinno wyglądać?

Ten post edytował 100jek 25.09.2008, 17:21:52
Go to the top of the page
+Quote Post
phpion
post 25.09.2008, 17:48:52
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Zacznij lepiej od normalizacji tabeli bo z tego co widzę, to nie jest ona poprawnie skonstruowana.
Go to the top of the page
+Quote Post
100jek
post 25.09.2008, 18:20:48
Post #6





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

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


Tabele mam po normalizacji. Ta "wizualizacja tabeli" to jest tylko po to żeby zobrazować mniej więcej powiązania między tabelami.

Mam takie tabele:

1. marki (marka_id int, producent)
2. modele (model_id int, model)
3. telefony(telefon_id int, marka int, model int)
4. ukladytel (ukladytel_id int, telefon int, uklad int)
5. uklady (uklad_id int, uklad)
6. zdjecia (zdjecie_id int, uklad int, zdjecie)
7. telczesc (telczesc_id int, telefon int, czesc int)
8. czesci (czesc_id int, czesc)
9. info (info_id, uklad_id, informacja)


zapytanie, które działa w MySQL 4 a nie działa w MySQL 5 to
  1. SELECT DISTINCT producent, modele.model, czesci.czesc, uklady.uklad, zdjecie, informacje
  2. FROM (((((((telczesc RIGHT OUTER JOIN telefony ON telczesc.telefon = telefony.telefon_id
  3. )
  4. INNER JOIN czesci ON telczesc.czesc = czesci.czesc_id
  5. )
  6. LEFT OUTER JOIN ukladytel ON ukladytel.telefon = telefony.telefon_id
  7. )
  8. LEFT OUTER JOIN uklady ON ukladytel.uklad = uklady.uklad_id
  9. )
  10. RIGHT OUTER JOIN czesci cz ON uklady.czesc = czesci.czesc_id
  11. )
  12. LEFT JOIN zdjecia ON uklady.uklad_id = zdjecia.uklad
  13. )
  14. LEFT OUTER JOIN info ON info.uklad = uklady.uklad_id
  15. ), marki, modele
  16. WHERE marki.marka_id = telefony.marka AND modele.model_id = telefony.model
  17. ORDER BY model,czesc, uklad ASC
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: 18.07.2025 - 13:52