Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Zaznaczanie z dwóch tabel
maxis88
post 23.04.2010, 07:33:20
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


Chciałbym się zapytać, czy istnieje możliwość zaznaczenia konkretnych komórek z dwóch tabel jednak w taki sposób żeby to co znajdzie w pierwszej było od razu warunkiem zaznaczenia w drugiej ?
( wiem ze cos podobnego mozna zrobic poprzez UNION )

np:
'SELECT 'id','kategoria' FROM zakupy WHERE ... '
i teraz żeby w drugim SELECT warunkiem było "id" z pierwszego selecta...

oczywiście istnieje możliwość rozłączenia tego na dwa osobne pytania ale po co sobie zaśmiecać kod ... dlatego pytam...
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
nospor
post 23.04.2010, 07:36:04
Post #2





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




nie rozumiem pytania.
  1. SELECT * FROM tabela1,tabela2 WHERE tabela1.id=tabela2.id

?
Powód edycji: [nospor]:


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maxis88
post 23.04.2010, 07:53:12
Post #3





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


Cytat(nospor @ 23.04.2010, 07:36:04 ) *
nie rozumiem pytania.
  1. SELECT * FROM tabela1,tabela2 WHERE tabela1.id=tabela2.id

?



Sprawa wygląda tak, że mam dwie tabele: jedna zawiera listę "zakupów" klienta a druga zawiera produkty...
w tabeli zakupów jest okrojona ilość informacji dlatego zawiera swego rodzaju wskaźnik do tabeli z produktami i z niej pobiera potrzebne dane...

dlatego potrzebuje z tabeli "zakupy" pobrać ów wskaźnik ( ew dwa ) który jest "id" w tabeli produktów i z nich pobrać wszystkie informacje
Go to the top of the page
+Quote Post
nospor
post 23.04.2010, 07:57:36
Post #4





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




no to dobrze ci napisalem zapytanie smile.gif

mozna tez je zamienic na LEFT JOIN
  1. SELECT * FROM zakupy
  2. LEFT JOIN produkty ON zakupy.idproduktu=produkty.id


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maxis88
post 23.04.2010, 08:13:04
Post #5





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


Cytat(nospor @ 23.04.2010, 07:57:36 ) *
no to dobrze ci napisalem zapytanie smile.gif

mozna tez je zamienic na LEFT JOIN
  1. SELECT * FROM zakupy
  2. LEFT JOIN produkty ON zakupy.idproduktu=produkty.id



wykombinowałem takie coś:
  1. $zaznacz=mysql_query("SELECT towar,kategoria,ilosc FROM zakupy WHERE klient='$nick' AND status='Koszyk' LEFT JOIN zakupy.kategoria ON zakupy.towar=zakupy.kategoria.id");


czy to teraz mi zaznaczy wszystko z drugiej tabeli gdzie jej id=kategorii pierwszej tabeli i "ilość" z pierwszej ? ;P

sry ale nigdy się tym nie bawiłem wcześniej i nie wiem na jakiej zasadzie to działa ;P

Ten post edytował maxis88 23.04.2010, 08:13:58
Go to the top of the page
+Quote Post
nospor
post 23.04.2010, 08:16:10
Post #6





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




jesli chcesz pobrac konkretne pola z roznych tabel, to musisz w SELECT powiedziec ktore pole z ktorej tabeli:
select tabela1.pole1, tabela1.pole2, tabela2.polejakiesinne.....


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maxis88
post 23.04.2010, 08:23:31
Post #7





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


Cytat(nospor @ 23.04.2010, 08:16:10 ) *
jesli chcesz pobrac konkretne pola z roznych tabel, to musisz w SELECT powiedziec ktore pole z ktorej tabeli:
select tabela1.pole1, tabela1.pole2, tabela2.polejakiesinne.....


mogłbyś zmodyfikować mój kod tak żeby było dobrze ?;/ wiem że marudzę ale coś sobie z tym nie radzę jeszcze...
-nazwa drugiej tabeli to prawdopodobnie ( jeśli dobrze zrozumiałem ) zakupy.kategoria
-a ID drugiej tabeli które chcę CAŁE wyciągnąć to zakupy.kategoria.id (?)
- do tego z pierwszej tabeli chcę jeszcze wyświetlić "ilosc"

podsumowując:
cala druga tabela + ilość z pierwszej

będę bardzo wdzięczny
Go to the top of the page
+Quote Post
nospor
post 23.04.2010, 08:28:58
Post #8





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




Cytat
cala druga tabela + ilość z pierwszej
przeciez to są podstawy. zapoznaj sie z podstawami mysql...
Druga tabela to nie zakupy.kategoria.... to jest pole kategoria z tabeli zakupy
zapoznaj sie tez ze skladnia mysql bo takie byki robisz ze sie w glowie nie miesci. to nic ze sie nie znasz - od tego masz manuala by doczytac jaka jest skladnia

  1. $zaznacz=mysql_query("SELECT produkty.*, zakupy.ilosc FROM zakupy LEFT JOIN produkty ON zakupy.towar=produkty.id WHERE klient='$nick' AND status='Koszyk' ");

przyjalem ze twoja druga tabela to PRODUKTY. Jesli to KATEGORIA to zmień na KATEGORIA a nie zadne ZAKUPY.KATEGORIA.
Powód edycji: [nospor]: [nospor]:


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maxis88
post 23.04.2010, 08:44:44
Post #9





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


Cytat
Druga tabela to nie zakupy.kategoria.... to jest pole kategoria z tabeli zakupy


no właśnie, że zakupy.kategoria ( czyli jak mówisz pole kategoria w zakupy) to nazwa mojej tabeli ( kategorii produktów ) zawierającej produkt ktorego szukam...

ogólnie ma to strukturę:

Kategoria1
--produkt1
--produkt2
--...
Kategoria2
--produkt1
--produkt2
--....
Zakupy
--zakup1 [ zawiera pole "kategoria" i "towar" gdzie -towar- to id w -kategoria- oraz -ilosc-]
--zakup2 ['id', 'towar=id produkt1', 'kategoria= nazwa tabeli w ktorej ma szukac', 'kupujacy']
Go to the top of the page
+Quote Post
nospor
post 23.04.2010, 08:46:53
Post #10





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




Cytat
no właśnie, że zakupy.kategoria ( czyli jak mówisz pole kategoria w zakupy) to nazwa mojej tabeli ( kategorii produktów ) zawierającej produkt ktorego szukam...
nie kumam.... masz tabele, ktora sie nazywa "zakupy.kategoria" ? Dokladnie tak sie nazywa?

Podaj strukture swojej bazy, z dokladną nazwą tabel i pol.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maxis88
post 23.04.2010, 08:53:07
Post #11





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


  1. $zakupy="id MEDIUMINT(255) NOT NULL AUTO_INCREMENT,";
  2. $zakupy.="towar TEXT NOT NULL,"; // zawiera id w kategorii (tabeli )
  3. $zakupy.="kategoria TEXT NOT NULL,"; // zawiera nazwę kategorii ( tabeli )
  4. $zakupy.="klient TEXT NOT NULL,";
  5. $zakupy.="ilosc TEXT NOT NULL,"; // zakupiona ilosc
  6. $zakupy.="info TEXT NOT NULL,";
  7. $zakupy.="zakup TEXT NOT NULL,";
  8. $zakupy.="status TEXT NOT NULL,";
  9. $zakupy.="PRIMARY KEY(id)";
  10.  
  11.  


budowa kazdej kategorii
  1. $item="id MEDIUMINT(255) NOT NULL AUTO_INCREMENT,";
  2. $item.="nazwa TEXT NOT NULL,";
  3. $item.="ilosc INT(20) NOT NULL,"; //ilosc na stanie
  4. $item.="cena VARCHAR(30) NOT NULL,";
  5. $item.="opis TEXT NOT NULL,";
  6. $item.="przesylka TEXT NOT NULL,";
  7. $item.="zdjecie TEXT NOT NULL,";
  8. $item.="miniaturka TEXT NOT NULL,";
  9. $item.="kategoria TEXT NOT NULL,";
  10. $item.="PRIMARY KEY (id)";


Ten post edytował maxis88 23.04.2010, 08:57:41
Go to the top of the page
+Quote Post
nospor
post 23.04.2010, 08:58:27
Post #12





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




wybacz, ale nic mi nie mowi przedstawiony przez Ciebie zapis.

ps: analizujac wszystko co tu napisales przyszla mi do głowy nieprawdopodobna myśl:
czy u ciebie w bazie, kazda kategoria to odzielna tabela? I tabela ma taką nazwą jak nazywa się kategoria?


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maxis88
post 23.04.2010, 09:10:57
Post #13





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


wersja "obrazkowa" haha.gif
Struktura i przykład
Zakupy [id | towar | kategoria | klient | ilosc | info | zakup | status]
[1 | 1 | Piłki | maxis| 3 | 0 | 0 | Koszyk]

Piłki [id | nazwa | ilosc | cena | opis | przesylka | zdjecie | miniaturka | kategoria]
[1 | nike | 99 | 2.30 | OPIS| 0 | adres | adres | Pilki ]



PS
było mi tak wygodniej żeby każda tabela to oddzielna kategoria ... poza tym chyba szybciej mi znajdzie element jak przeszuka jedną mniejszą tabelę niż taka która ma wszystkie elementy

Ten post edytował maxis88 23.04.2010, 09:11:23
Go to the top of the page
+Quote Post
nospor
post 23.04.2010, 09:14:03
Post #14





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




Cytat
było mi tak wygodniej żeby każda tabela to oddzielna kategoria ...
No nic dziwnego ze sie nie rozumielismy... ja mialem przed oczami normalną strukturę bazy danych a ty w rzeczywistosci masz jakąś sieczkę...

Tak się nie robi. To jest totalnie źle zrobione. Na takiej strukturze nie da sie normalnie funkcjonowac.

To sie robi tak:
jedna tabela na towar
jedna tabela na kategorię.
Jesli towar moze nalezec do kilku kategorii to tworzy się dodatkową jedną tabele łączącą towar z kategorią


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maxis88
post 23.04.2010, 09:27:05
Post #15





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


Niezbyt rozumiem sens tworzenia oddzielnych tabel dla każdej pojedynczej kategorii skoro tworzymy też dla każdego produktu oddzielną tabele ...
Dla mnie będzie to jeszcze większy śmietnik niż jest teraz, jak nasiekam 10 000 tabel. Tak przynajmniej mam "schowany" każdy towar do kategorii i kiedy chcę dostać się do konkretnej grupy produktów to jedynie otwieram konkretną tabelę i wyświetlam jej zawartość...

No ale to już nie ma co dyskutować... rozumiem, że nie da się tego zrobić ? Czy da się, ale lepiej pozostać przy tym co mam i tego nie ruszać skoro działa ;P ( mam dwa oddzielne SELECT'y )
Go to the top of the page
+Quote Post
nospor
post 23.04.2010, 09:30:38
Post #16





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




Cytat
Niezbyt rozumiem sens tworzenia oddzielnych tabel dla każdej pojedynczej kategorii skoro tworzymy też dla każdego produktu oddzielną tabele ...
Dla mnie będzie to jeszcze większy śmietnik niż jest teraz, jak nasiekam 10 000 tabel
smile.gif
W moim rozwiązaniu masz 3 tabele a nie 10tys......

Jedna tabela na towar oznacza jedną tabelę a w niej wszystkie towary jako rekordy
Jedna tabela na kategorie oznacza ze masz jedną tabele o nazwie KATEGORIA i wniej są zapisane wszystkie kategorie jako rekordy
smile.gif

Cytat
Czy da się, ale lepiej pozostać przy tym co mam i tego nie ruszać skoro działa
Nie. To trzeba przepisac tak jak ci zaproponowalem


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maxis88
post 23.04.2010, 09:32:35
Post #17





Grupa: Zarejestrowani
Postów: 110
Pomógł: 1
Dołączył: 17.09.2007

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


no to się nie zrozumieliśmy ;P a z tym 10 tys to był przykład jak widać trochę nietrafiony ;P

OK to zostane przy tym co mam bo za dużo czasu by mnie kosztowało przerabianie teraz całego mechanizmu haha.gif
Go to the top of the page
+Quote Post
nospor
post 23.04.2010, 09:34:04
Post #18





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




Cytat
OK to zostane przy tym co mam bo za dużo czasu by mnie kosztowało przerabianie teraz całego mechanizmu
Oj... uwierz mi na slowo ze bys na tym zdecydowanie lepiej wyszedl jakbys jednak przerobil. No ale Twoj wybor - zyj w blogiej nieswiadomosci. zebys sie tylko kiedys nie zdziwil smile.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Wykrywacz
post 23.04.2010, 09:50:08
Post #19





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


On chyba niema świadomości na co się porywa.

Zróbmy to obrazkowo, zamówiłem sobie dekorolkę, gazówkę pod namiot, namiot, piłkę do kosza i rower.
Pokaż mi jak byś zrobił selecta aby wyświetlić to wszystko w formularzu zamówienia.

Celowo cię o to proszę aby pokazać ci zupełny brak optymalności twojego pomysłu.
Go to the top of the page
+Quote Post
nospor
post 23.04.2010, 09:54:41
Post #20





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




Cytat
Pokaż mi jak byś zrobił selecta aby wyświetlić to wszystko w formularzu zamówienia.
No wlasnie o to zapytal w tym temacie - po to go zalozyl by uzyskac odpowiedź

A na chwilę obecną robi to ponoc tak:
Cytat
Czy da się, ale lepiej pozostać przy tym co mam i tego nie ruszać skoro działa ;P ( mam dwa oddzielne SELECT'y )

Nie za bardzo to widze jak to zrobil, no ale widac jakos zrobil. jesli mu z tym dobrze to jego wybor smile.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 19.07.2025 - 15:11