Proszę o podanie zapytania które wyciągnie wszystkie druzyny które nie posiadają managera, prosze zauważyć że tabela manager nie ma pola w którym ma przypisanie do druzyny ale menadzer takowe ma, defaultowa wartość 0 oznacza brak druzyny. Nie chce dodawać pola do tabeli, szukam sposobu na wyciagniecie takich danych, przy okazji poprosze komentarz jak to sie ma do wydajności, w porównaniu z przypadkiem gdyby owe pole istniało. Dzieki
manager:
+------------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+----------------------+------+-----+---------+----------------+
| id_manager | int(10) unsigned | NO | PRI | NULL | auto_increment |
| first_name | varchar(30) | NO | | NULL | |
| surname | varchar(30) | NO | | NULL | |
| e_mail | varchar(50) | NO | | NULL | |
| password | varchar(40) | NO | | NULL | |
| age | smallint(5) unsigned | YES | | 0 | |
| id_team | int(10) unsigned | YES | | 0 | |
+------------+----------------------+------+-----+---------+----------------+
team:
+------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| id_ligi | int(11) | NO | | 0 | |
| id_centrum | int(11) | NO | | 0 | |
| budzet | double | NO | | 0 | |
| team_name | varchar(30) | NO | | NULL | |
+------------+-------------+------+-----+---------+----------------+
IHMO bardzo niepoważny jesteś. Podawanie gotowego kodu jest najgłupszym sposobem (chociaż często tutaj praktykowanym). Chcesz coś osiągnąć to weź się za naukę, a nie proś o naprawdę banalne zapytanie. Jak nie chcę Ci się sprawdzić najprostszej rzeczy to lepiej zostaw mysql i weź się za coś zdecydowanie bardziej na Twoim poziomie.
Pole password nie powinno być typu varchar(40). SHA-256 potrzebuje char(64), a taki SHA-512 char(128). Jeśli nie jest prawdą, że dany menedżer ma zawsze przypisaną drużynę, to pole id_team możesz wywalić i dodać pole id_manager do tabeli team. Dzięki temu będzie widać od razu jakiego menedżera ma dana drużyna. Jeśli drużyna może mieć kilku menedżerów (nie wiem, czy jest to możliwe) to potrzebna jest osobna tabela, żeby odwzorować relację wiele do wielu. Poza tym pole budzet nie powinno być typu double. Nie ma w MySQL innego typu do przechowywania waluty? A może wystarczy sam int (zaraz podrzucę link do ciekawej dyskusji)?
Skoro jesteś taki dobry to podaj to zapytanie, czy może jesteś kolejnym pseudo programistą wielkim znawcom teorii. Nie wiem gdzie mam to sprawdzić, podaj fraze do googla co byś wrzucił.
@matzu po co komentujesz coś o co nie prosiłem… baza jest przykladowa
OK a jak potem sprwadze managerów ktorzy nie maja druzyny? To jest odwracanie kota ogonem. pomyśl.
Przeciez wiem ze moge to zrobić bardziej relacyjnie i powstawiać pola albo stworzyć tabele ktora to zlaczy ale ja chce zobaczyć jak wyciagnac takie dane jak podałem
– Dodane 27.08.2011 (So) 22:17 –
OK a jak potem sprwadze managerów ktorzy nie maja druzyny? To jest odwracanie kota ogonem. pomyśl.
Przeciez wiem ze moge to zrobić bardziej relacyjnie i powstawiać pola albo stworzyć tabele ktora to zlaczy ale ja chce zobaczyć jak wyciagnac takie dane jak podałem
Jeśli projektujesz bazę danych, to Twoim zadaniem jest jak najlepiej odwzorować rzeczywistość, a nie myśleć zrobię tak i tak, bo będzie mi łatwiej przygotować zapytanie SQL. Zawsze da się zrobić zapytanie SQL (a przynajmniej nie spotkałem przypadku, gdzie się nie dało). Język SQL jest bardzo elastyczny. W Twoim przypadku potrzebujesz użyć tego polecenia LEFT JOIN lub tego RIGHT JOIN (na jedno wyjdzie).
W każdym zapytaniu SQL, które korzysta z więcej niż jednej tabeli, używasz JOIN-ów. W zależności od tego jakie dane potrzebujesz, używasz innego typu JOIN-a.
Ciężka rozmowa :). Zadałeś pytanie (co mnie zaskoczyło, bo wydawało mi się, że nie potrzebujesz moich rad)
W odpowiedzi na to pytanie napisałem, że będziesz musiał użyć LEFT JOIN lub RIGHT JOIN. Podałem nawet link do strony, gdzie masz wyjaśnione jak się używa tych poleceń. Czego jeszcze oczekujesz? Z mojej strony to już koniec dyskusji.
@faust1002 ja tez pracuje w tym zawodzie, nie rozumiem po co mi dajesz doca mysqla… Nie jestem idiotą… Czy ty nie rozumiesz że jak sie nie wie z jakiej konstrukcji sqla skorzystać to się nawet nie wie jak ją znaleźć bo zwyczajnie nie wiadomo jakich haseł szukać. Dlatego prosiłem o podanie przykładu i nie po to żeby skopiować i wkleić lecz na jego podstawie dopiero iść na doca i zapamietac. Skoro jesteś zawodowcem to wykaż się jakbyś to zrobił bo narazie owijasz problem w bawełnę…
Pracujesz w zawodzie? A mnie rozśmieszyłeś. Ciekawe co robisz, pewnie tylko kawę.
nawet nie wie jak ją znaleźć bo zwyczajnie nie wiadomo jakich haseł szukać
Myślałem, że umiejętność nazywania swoich problemów wszystkie dzieci opanowały już w przedszkolu. Dalej musisz na kupę “kaka”? Prosty sposób na rozwiązywanie problemów
Najpierw pomyśl z czym masz problem.
Nazwij problem (po angielsku)
Zapytaj wujka Google.
Zrobilem to, Twój problem to “mysql joining table if key doesn’t exists” i … hura odpowiedź na pierwszej stronie.
Obstawiam, że zajmujesz się programowaniem stron www. Pamiętaj, że programowanie stron www (szczególnie w PHP) zwykle ma się do programowania jak krzesło do krzesła elektrycznego.
Założyłem, że rozmawiam z osobą, do której przemawiają sensowne argumenty. NIST to jest organizacja, która sprawuje pieczę nad konkursem na nową kryptograficzną funkcję skrótu (SHA-3). Wydaje mi się, że ich opinia powinna znaczyć b. dużo dla każdego developera (nie jest to pierwszy i ostatni raz, gdy się pomyliłem).