Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Różnica między mysql 4 i 5
Forum PHP.pl > Forum > Bazy danych > MySQL
100jek
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
misiek172
http://forum.php.pl/index.php?showtopic=95...mp;#entry478042 np. taka
nevt
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).
100jek
@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ć?
phpion
Zacznij lepiej od normalizacji tabeli bo z tego co widzę, to nie jest ona poprawnie skonstruowana.
100jek
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.