Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Jak poprawnie napisać zapytanie?, Mam problem z konkretnym zapisem zapytania SQL
Pite(R)
post 24.09.2011, 23:41:01
Post #1





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

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


Witam.

Wykonuję sobie ćwiczenia z pewnego podręcznika do PHP i MySQL. Posiadam bazę danych o nazwie "moviesite". Posiada ona trzy tabele: movie, movietype i people, przy czym movietype jest w tym wypadku niepotrzebny.

movie:
Kod
+----------+---------------------+------------+------------+-----------------+----------------+
| movie_id | movie_name          | movie_type | movie_year | movie_leadactor | movie_director |
+----------+---------------------+------------+------------+-----------------+----------------+
|        1 | Bruce Wszechmogący  |          5 |       2003 |               1 |              2 |
|        2 | Życie biurowe       |          5 |       1999 |               5 |              6 |
|        3 | Wielki Kanion       |          2 |       1991 |               4 |              3 |
+----------+---------------------+------------+------------+-----------------+----------------+


people:
Kod
+-----------+-----------------+----------------+-------------------+
| people_id | people_fullname | people_isactor | people_isdirector |
+-----------+-----------------+----------------+-------------------+
|         1 | Jim Carrey      |              1 |                 0 |
|         2 | Tom Shaydac     |              0 |                 1 |
|         3 | Lawrence Kasdan |              0 |                 1 |
|         4 | Kevin Kline     |              1 |                 0 |
|         5 | Ron Livingston  |              1 |                 0 |
|         6 | Mike Judge      |              0 |                 1 |
+-----------+-----------------+----------------+-------------------+


Potrzebuję zapisać zapytanie, które "stworzy" taką (lub podobną) tabelkę:
Kod
+------------+-----------------+----------------+
| movie_name | movie_leadactor | movie_director |
+------------+-----------------+----------------+

Gdzie zamiast numerków pod movie_leadactor i movie_director pojawią się nazwiska z kolumny people_fullname. Niestety, nie mam już pomysłu, jak zapisać to zapytanie. Proszę o pomoc.

Pozdrawiam.

Ten post edytował Pite(R) 24.09.2011, 23:47:40
Go to the top of the page
+Quote Post
bastard13
post 24.09.2011, 23:50:19
Post #2





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


Rozumiem, że:
Cytat
Potrzebuję zapisać zapytanie, które "stworzy" taką (lub podobną) tabelkę:

oznacza: zwróci mi taki wynik.
Pokaż swoje próby (ze stwierdzenia 'nie mam już pomysłów' wnioskuję, że były) to coś poradzimy na twój problem:)


--------------------
Go to the top of the page
+Quote Post
Pite(R)
post 25.09.2011, 00:00:34
Post #3





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

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


Cytat(bastard13 @ 25.09.2011, 00:50:19 ) *
Rozumiem, że:
oznacza: zwróci mi taki wynik.

Ano biggrin.gif
Cytat(bastard13 @ 25.09.2011, 00:50:19 ) *
Pokaż swoje próby (ze stwierdzenia 'nie mam już pomysłów' wnioskuję, że były) to coś poradzimy na twój problem:)

  1. SELECT movie_name, people_fullname
  2. FROM movie
  3. LEFT JOIN people
  4. ON (movie_leadactor = people_id
  5. OR movie_director = people_id)
  6. ORDER BY movie_name;

Kod
+---------------------+-----------------+
| movie_name          | people_fullname |
+---------------------+-----------------+
| Bruce Wszechmogący  | Jim Carrey      |
| Bruce Wszechmogący  | Tom Shaydac     |
| Wielki Kanion       | Lawrence Kasdan |
| Wielki Kanion       | Kevin Kline     |
| Życie biurowe       | Ron Livingston  |
| Życie biurowe       | Mike Judge      |
+---------------------+-----------------+


  1. SELECT movie_name, people_fullname
  2. FROM movie
  3. LEFT JOIN people
  4. ON movie_leadactor = people_id
  5. ORDER BY movie_name;

Kod
+---------------------+-----------------+
| movie_name          | people_fullname |
+---------------------+-----------------+
| Bruce Wszechmogący  | Jim Carrey      |
| Wielki Kanion       | Kevin Kline     |
| Życie biurowe       | Ron Livingston  |
+---------------------+-----------------+


  1. SELECT movie_name, movie_leadactor, movie_director
  2. FROM movie
  3. LEFT JOIN people
  4. ON (movie_leadactor = people_id
  5. OR movie_director = people_id)
  6. ORDER BY movie_name;

Kod
+---------------------+-----------------+----------------+
| movie_name          | movie_leadactor | movie_director |
+---------------------+-----------------+----------------+
| Bruce Wszechmogący  |               1 |              2 |
| Bruce Wszechmogący  |               1 |              2 |
| Wielki Kanion       |               4 |              3 |
| Wielki Kanion       |               4 |              3 |
| Życie biurowe       |               5 |              6 |
| Życie biurowe       |               5 |              6 |
+---------------------+-----------------+----------------+


Oto moje niezbyt udane próby.

Ten post edytował Pite(R) 25.09.2011, 00:01:49
Go to the top of the page
+Quote Post
bastard13
post 25.09.2011, 00:06:04
Post #4





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

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


Powinno zadziałać:
  1. SELECT movie_name, p1.people_fullname AS leadactor, p2.people_fullname AS director
  2. FROM movie
  3. LEFT JOIN people AS p1
  4. ON movie_leadactor = people_id
  5. LEFT JOIN people AS p2
  6. ON movie_director = people_id
  7. ORDER BY movie_name;


--------------------
Go to the top of the page
+Quote Post
Pite(R)
post 25.09.2011, 00:11:55
Post #5





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

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


  1. SELECT movie_name, p1.people_fullname AS leadactor, p2.people_fullname AS director
  2. FROM movie
  3. LEFT JOIN people AS p1
  4. ON movie_leadactor = p1.people_id
  5. LEFT JOIN people AS p2
  6. ON movie_director = p2.people_id
  7. ORDER BY movie_name

people_id było niejednoznaczne, po poprawce poszło jak marzenie smile.gif
Wielkie dzięki!

Ten post edytował Pite(R) 25.09.2011, 00:12:14
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: 13.05.2024 - 15:09