php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.05.2006, 14:26  
Benutzer
 
Registriert seit: 23.08.2005
Beiträge: 45
Ministry
Standard JOIN problem 2 tabellen - zeile(tab1) zu spalte(tab2)

hi,
ich hab mal wieder ein mittelgrosses problem.
ich verstehe JOIN nicht so richtig.
ich will 10 zeilen aus tabelle 1 10 spalten aus tabelle 2 zuordnen.

tabelle1:
id | name | desc |
-----------------
1 | blubb1 | blah1 |
2 | blubb2 | blah2 |
...
10 | blubb10 | blah3 |

tabelle2:
id | name | will_1 | will_2 | .. | will_10
------------------------------------------------
63 | Mini | 1 | 1 | .. | 0

ausgabe:
1. blubb1 blah1 1
2. blubb2 blah2 1
10. blubb10 blah10 0

oder anders :
1. E-Mail: Die E-Mail Funktion..blah... aktiv
10. Newsletter: Die Newsletter Funktion...blah... inaktiv

Das ganze mit einer schleife auszugeben ist ja nicht schwer.
Das JOIN kapier ich aber nicht.
oder bin ich bei JOIN völlig falsch?

danke schonmal
__________________
ich.com
sie.net
scha.de
Ministry ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.05.2006, 14:30  
Gast
 
Beiträge: n/a
Standard

Ich versteh absolut nicht was du willst...gibt es in den beiden Tabellen irgendwelche Fremdschlüssel oder wie stellst du dir deinen Join vor??? Sind die ID's in beiden Tabellen die gleichen?

Ich glaube du solltest dein Problem erst mal klar formulieren...
  Mit Zitat antworten
Alt 30.05.2006, 14:55  
Gast
 
Beiträge: n/a
Standard

Ein Blick auf ein kurzes tutorial schadet sicher auch nicht.
http://www.w3schools.com/sql/sql_join.asp
  Mit Zitat antworten
Alt 30.05.2006, 15:43  
Benutzer
 
Registriert seit: 23.08.2005
Beiträge: 45
Ministry
Standard

also...
ich will das feld will_1 (tabelle 2) der zeile mit der id = 1 (tabelle 1) zuordnen usw.

das tut hab ich schon gesehen aber nicht so ganz kapiert (mein englisch ist auch nicht so toll).

also wie kann ich das feld will_x einem datensatz aus einer anderen tabelle zuordnen.

also SELECT tabelle1.*, tabelle2.will_1, tabelle2.will_2 usw...scheint logisch zu sein...da hörts bei mir aber auch schon wieder auf.

ich will tabelle 1 komplett auslesen, bei tabelle 2 aus einem bestimmten datensatz die felder will_1 bis will_10 auslesen und dann datensatz 1 aus tabelle 1
zusammen mit will_1, datensatz 2 aus tabelle 1 mit will_2 usw. in einer schleife ausgeben.

was ich nicht verstehe ist:
1. ist join überhaupt das richtige für mich (scheint ja so zu sein)
2. wie ordne ich die ausgelesenen daten einander zu...
PHP-Code:
SELECT tabelle1.*, tabelle2.will_1tabelle2.will_2 usw FROM tabelle1 (irgendein)JOIN tabelle2... 
scheint (für mein empfinden) der richtige ansatz zu sein...
__________________
ich.com
sie.net
scha.de
Ministry ist offline   Mit Zitat antworten
Alt 30.05.2006, 16:00  
Gast
 
Beiträge: n/a
Standard

Sorry ich verstehs immer noch nicht...ich habe den Eindruck dein DB-Design ist nicht ganz sinnvoll (seeeeeeeeeeeeeeehr höflich ausgedrückt)

Ein Vorschlag: sag doch mal in "natürlicher Sprache" (ohne irgendwelche Tabellenspalten oder sonst was) was du eigentlich machen willst, und dann helfen wir dir, wie die DB sinnvollerweise auszuschauen hat...
  Mit Zitat antworten
Alt 30.05.2006, 16:51  
Benutzer
 
Registriert seit: 23.08.2005
Beiträge: 45
Ministry
Standard

also ich will anzeigen lassen, welchen formen der komunikation der benutzer zugestimmt hat, und ihn diese ggf. ändern lassen.
dazu habe ich eine benutzertabelle erstellt, in der alle daten des benutzers gespeichert sind (z.b. name, email, passwort usw.).
dann habe ich eine tabelle in der ich die verschiedenen formen der kontaktaufnahme habe. also sachen wie das versenden von emails, skype-anrufe, newsletter usw..

der user soll jetzt in seinem profil einstellen können, welche formen der kontaktaufnahme er wünscht. dazu soll er in seinem profil gelistet bekommen, welche möglichkeiten es gibt und wie sein aktueller status für jeden einzelen dieser punkte ist.
dh.
ich (Ministry) gehe in mein profil.
klicke dort auf komunikation.
und bekomme dann meine liste folgendermassen präsentiert :
1. Email: Sollen andere Benutzer dir E-Mails schicken dürfen (Ja/Nein) "aktiv"

mit einem klick auf "aktiv" wird dann der status auf inaktiv gesetzt. der aktuelle status wird dann in der benutzertabelle gespeichert.

ich habe also folgendes gespeichert :
in der benutzertabelle habe ich für jede form der angebotenen komunikation ein feld 0/1, ja/nein...wie auch immer.
in der komunikationstabelle habe für jede komunikationsform (z.b. email) die bezeichnung, eine beschreibung, pfad zur grafik usw. gespeichert.

nun muss ich aber eben noch die profilanzeige realisieren...also:
hole mir aus der komunikationstabelle alle daten und aus der usertabelle die dazugehörigen statuswerte, kombiniere das ganze und präsentiere mir die liste
das fett-gedruckte ist ist im prinzip mein problem....
__________________
ich.com
sie.net
scha.de
Ministry ist offline   Mit Zitat antworten
Alt 31.05.2006, 09:05  
Gast
 
Beiträge: n/a
Standard

Hi Ministry,

ich glaube jetzt habe ich verstanden was du willst

Ich schlage dir folgenden Datenbankaufbau vor:

Tabelle user:
user_id
user_name
user_pw
...

Tabelle Kommunikationsformen komm:
komm_id
komm_art
komm_desc
...

Und jetzt das wichtige: zwischen Usern und Kommunikationsformen besteht eine n:m-Beziehung, d.h. ein User kann verschiedenen Kommunikationsformen zugeordent sein, aber eine Kommunikationsform kann auch verschiedenen Benutzern zugeordnet sein. Du brauchst also eine Verknüpfungstabelle:

Tabelle User_Komm:
user_id (foreign key)
komm_id (foreign_key)
active (0/1)

In dieser Tabelle ist pro User und Kommunikationsart ein Eintrag, der festlegt, ob diese Kommunikationsart aktiv (1) oder inaktiv(0) ist.

Mit diesem Design kannst du dir nun alle user-status-werte wie folgt holen:

Code:
select user.user_id, user.user_name, komm.komm_art, komm.komm_desc, user_komm.active
from user, komm, user_komm
where user_id = user_komm.user_id
and komm_id = user_komm.komm_id

Alternativ könntest du die Spalte "active" in der Verknüpfungstabelle weglassen und definieren, dass eine Kommunikationsform aktiv ist, wenn ein Eintrag in der Verknüpfungstabelle mit entsprechender User_id und komm_id vorhanden ist. Dann benötigst du für dein Vorhaben aber (einen komplizierteren oder) zwei Querys: einen zum lesen der aktiven Kommunikationsformen und einen zum lesen der inaktiven Kommunikationsformen...ich denke da ist die erste Alternative einfacher...
  Mit Zitat antworten
Alt 31.05.2006, 10:31  
Benutzer
 
Registriert seit: 23.08.2005
Beiträge: 45
Ministry
Standard

also doch ne dritte tabelle....
ich werd das mal so machen
danke schön...und schönen tag noch
__________________
ich.com
sie.net
scha.de
Ministry ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Join... smogul Datenbanken 4 18.02.2008 20:05
Ein kleines Join Problem (MySQL) susi85 Datenbanken 12 12.12.2007 20:00
MySQL Join mit 3 Tabellen quichibo Datenbanken 2 18.10.2007 10:58
Komplexes Join Problem pPanther Datenbanken 7 03.08.2007 23:16
Volltext-Suche Problem - 2 verschiedene Tabellen Datenbanken 1 18.09.2006 16:32
Problem bei JOIN MilanX Datenbanken 3 03.05.2006 16:36
LEFT OUTER JOIN für mehr als 2 Tabellen ? Alpha Centauri Datenbanken 4 05.04.2006 16:18
[Erledigt] Tabellen erstellen problem PHP Tipps 2006 5 06.03.2006 16:55
leere tabellen problem mit zählen Nosferatu PHP Tipps 2006 1 08.01.2006 03:28
[Erledigt] LEFT JOIN Problem Datenbanken 11 21.03.2005 16:36
2 Tabellen verknüpfen, Problem Datenbanken 6 30.12.2004 09:53
über PHP Daten in MySQL Tabellen updaten -- Problem PHP Tipps 2004 4 27.09.2004 21:34
Join aus 3 Tabellen mit nur einer Verknüpfung? Datenbanken 7 24.09.2004 18:25
Abfrage über 2 Tabellen / Join agrajag Datenbanken 2 14.09.2004 23:05
[Erledigt] Join für Select Count(`id`)-Abfrage über 4 Tabellen Datenbanken 4 10.07.2004 18:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql join verknüpfungstabelle, 2 zeilen einer tabelle in eine zeile joinen, join spalten zu zeile, sql join zeile zu spalte, sql verknüpfungstabelle join, sql select verknüpfungstabelle, asp join 2 spalten aus 1 tabelle, join verknüpfungstabelle, join in php ausgeben lassen, mysql join 2 tables 1 zeile 2 zeilen, google tabellenkalkulation spalten joinen, join zwei tabellen mit gleichen feldern, verknüpfungstabelle where join, php myql join verknüpfungstabelle, join über verknüpfungstabelle, mysql join zeilen in eine spalte, mysql join tabellen ein eine zeile statt mehrer, my sql join zeilen als spalten, mysql zeilen zu spalten join, spalte auf mehrere spalten joinen

Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.