Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Problem bei abfrage von DB daten mittels join

  1. #1
    Youngster
    Registriert seit
    15.09.2005
    Beiträge
    19
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Problem bei abfrage von DB daten mittels join

    moin,
    hoffe mir kann hier jemand weiterhelfen, auch wenn bei diesem sub forum nicht explizit mysql aufgeführt ist
    das Problem ist folgendes:
    ich habe in der mysql Datenbank Daten, die ich aus 3 Tabellen auslesen muss, und dann in PHP in einer Tabelle anzeigen lassen will.
    Leider bekomm ich durch einen join nicht das gewünschte Ergebnis.
    Ich hatte Testweise mal einen join mit nur zwei tabellen probiert, was genaus wenig funktionierte:
    Code:
    $query	=	"SELECT
    			band.BAND_NAME,
    			 prod.PROD_BEZEICHNUNG
    			FROM tbl_rezensionen_bands AS band,
    			tbl_rezensionen_produkte AS prod
    			 ";
    $erg	=	mysqli_query($con,$query);
    while($row	=	mysqli_fetch_assoc($erg)) {
    	echo $row['BAND_NAME'];
    	echo "
    ";
    }
    ich hatte halt Testweise mal nur 2 Tabellen im join reingenommen,das Problem ist, dass bei der Ausgabe das ganze 8x ausgegeben wird
    das sieht dann so aus:
    Code:
    Bandname
    ghjfvghj
    4576467
    dfghfg
    fghdcfg
    dfgsd
    dfgsd
    Bandname
    ghjfvghj
    4576467
    dfghfg
    fghdcfg
    dfgsd
    dfgsd
    Bandname
    ghjfvghj
    4576467
    dfghfg
    fghdcfg
    dfgsd
    dfgsd
    Bandname
    ghjfvghj
    4576467
    dfghfg
    fghdcfg
    dfgsd
    dfgsd
    Bandname
    ghjfvghj
    4576467
    dfghfg
    fghdcfg
    dfgsd
    dfgsd
    Bandname
    ghjfvghj
    4576467
    dfghfg
    fghdcfg
    dfgsd
    dfgsd
    Bandname
    ghjfvghj
    4576467
    dfghfg
    fghdcfg
    dfgsd
    dfgsd
    Bandname
    ghjfvghj
    4576467
    dfghfg
    fghdcfg
    dfgsd
    dfgsd
    obwohl eigentlich nur
    Code:
    Bandname
    ghjfvghj
    4576467
    dfghfg
    fghdcfg
    dfgsd
    dfgsd
    ausgegeben werden sollte
    Da ich nicht so recht wusste wo da das Problem liegt hatte ich versucht den join zu umgehen, und das ganze in eine temp table einzutragen, die ich dann ja auslesen könnte. Ich hatte dafrü dann zum Testen mal einen Datensatz genommen:
    Code:
    $i=0;
    while&#40;$i < count&#40;$array_sum&#41;&#41; &#123;
    
    	$result2	=	"INSERT INTO temp_ausgabe&#40;BAND_NAME&#41; VALUES&#40;'$dump'&#41;";
    	$dump		=	$array_sum&#91;$i&#93;;
    	mysqli_query&#40;$con,$result2&#41;;
    	$i++;
    &#125;
    $array_sum beinhaltet hierbei die werte aus BAND_NAME
    wenn ich den array über echo und ne for schleife ausgeben lasse ist das alles auch ok, sobald ich ihn allerdings wie im codeschnipsel oben in die DB eintrage erhalte ich jedesmal einen leeren Datensatz vor den andern Datensätzen
    also ich bin da so langsam ratlos...
    wär Klasse, wenn jemand das Problem sieht, manchmal sieht man ja den Wald vor Bäumen nichtmehr.
    mfg ein ratloser Sukkubus
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    ja, du must wenn du über 2 tabllen abrufst, die beiden tabellen mittels WHERE verbinden also

    tab1.id=tab2.id oder so

  3. #3
    Youngster
    Themenstarter

    Registriert seit
    15.09.2005
    Beiträge
    19
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    moin
    das Problem daran wäre aber, dass die IDs in beiden Tabellen ja nicht identisch sind
    d.h. es würden so dann Datensätze verloren gehen :/
    In der Tabelle tbl_rezensionen_bands hab ich ja ganz andere IDs als in der Tabelle tbl_rezensionen_produkte, da muss es doch noch eine andere Möglichkeit geben das zu lösen ?

  4. #4
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    also diese Tabellen haben keinerlei beuzug?? auch nicht über eine 3te ???

    und was soll da ganau ausgegeben werden ???

  5. #5
    Youngster
    Themenstarter

    Registriert seit
    15.09.2005
    Beiträge
    19
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    moin,
    also das hat sich nun grade geändert,es sindnun 5 Tabellen zum joinen ~~
    2 Tabellen konnte ich nu joinen über eine ID, die in einer Tabelle als PK vorliegt, in der andern als FK.
    Code:
    $query	=	"SELECT 
    			A.BAND_ID, 
    			A.PROD_BEZEICHNUNG,
    			B.BAND_ID,
    			B.BAND_NAME
    		      FROM
    			tbl_rezensionen_produkte
    		      AS
    			A,
    			tbl_rezensionen_bands
    		      AS
    			B
    		      WHERE
    			A.BAND_ID = B.BAND_ID
    			";
    das funktioniert so auch für 2 andere Tabellen, die beide wieder einen Schlüssel als Bezug haben.
    Sobald ich allerdings versuche 4 Tabellen in einem Select zu joinen werden mir wieder Daten doppelt ausgegeben:
    Code:
    $query="SELECT 
    				A.BAND_ID, 
    				A.PROD_BEZEICHNUNG,
    				B.BAND_ID,
    				B.BAND_NAME,
    				C.PROD_ID,
    				C.REZ_DATUM,
    				D.PROD_ID,
    				D.BEW_URTEIL
    			FROM
    				tbl_rezensionen_produkte
    			AS
    				A,
    				tbl_rezensionen_bands
    			AS
    				B,
    				tbl_rezensionen
    			AS
    				C,
    				tbl_rezensionen_bewertung
    
    			AS
    				D
    			WHERE
    				A.BAND_ID = B.BAND_ID
    			AND
    				C.PROD_ID = D.PROD_ID";
    Kann ich daraus nun schliessen, dass damit es funktioniert JEDE Tabelle einen Bezug zu JEDER anderen haben muss ?
    Die Tabellen haben Relationen, allerdings nicht jede Tabelle zu jeder
    Code:
    tbl_rezensionen_produkte n&#58;1 tbl_rezensionen_bands
    tbl_rezensionen_produkte 1&#58;1 tbl_rezensionen
    tbl_rezensionen_produkte 1&#58;n tbl_rezensionen_bewertung
    tbl_rezensionen          n&#58;1 tbl_mitarbeiter
    tbl_mitarbeiter          1&#58;n tbl_rezensionen_bewertung

  6. #6
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    kannst du bitten ein ausführliches ER Modell dalegen und dann genau welche daten in welcher form ausgegeben werden sollen, ich raffe leider immer noch nicht was du überhaupt vor hast. welche daten du wie haben willst und vorallem wiso mit JOIN ??? wisst du jetzt wirklich nen JOIN oder einfach nur ne abfrage über mehrere Tabellen??

  7. #7
    Youngster
    Themenstarter

    Registriert seit
    15.09.2005
    Beiträge
    19
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    moin
    najut, dann werd ich das ERM hier noch reinstellen
    Ich will die Daten in einer Tabelle ausgeben lassen
    also z.B:
    while($row=mysql_fetch_assoc($result_query) {
    echo"<td>{$row[column]}</td>\n";
    usw.
    }
    dafür muss ich das ja vorher in einer abfrage zusammengefasst haben
    So ich mache gleich ma screenshot vom ERM und editiere den dann rein, bzw poste es drunter, je nachdem was das Forum mitmacht

    hier dann das ERM:

  8. #8
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Ich konnte es zwar nicht testen, aber bin mir zimlich sicher das es stimmt, da es ja eigentlich ne einfache Abfrage ist:
    Code:
    SELECT A.BAND_ID, A.PROD_BEZEICHNUNG, A.PROD_ID, B.BAND_NAME, C.REZ_DATUM, D.BEW_URTEIL FROM `tbl_rezensionen_produkte` AS A, `tbl_rezensionen_bands` AS B, `tbl_rezensionen` AS C, `tbl_rezensionen_bewertung` AS D WHERE A.BAND_ID=B.BAND_ID AND A.PROD_ID=C.PROD_ID AND A.PROD_ID=D.PROD_ID;

  9. #9
    Youngster
    Themenstarter

    Registriert seit
    15.09.2005
    Beiträge
    19
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    moin,
    spielt es nun bei den Relationen für die joins eine Rolle wie diese angelegt sind ?
    Du hast ja A:B A:C A:D
    Damit hast du ja die Tabellen mit ihren Alias B C D alle an A gebunden
    Wenn das nur so geht, dass alle auf eine bestimmte Tabelle bezogen werden müssen würde ich ja scheitern, wenn ich die Mitarbeiter Tabelle mit
    Where E.MA_ID = C:MA_ID
    anbinden will, oder ?
    das wäre dann ja das gleiche, was ich auch schon oben hatte
    Das heisst ich müsste dann noch die MA_ID in die tbl_rezensionen_produkte übernehmen, damit es funktioniert ?
    danke schonmal soweit für deine Hilfe, konnte die Abfrage nochnicht testen, werd ich aber mal nachher machen ;)

  10. #10
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    ein, mann muss nicht bei einer abfrage alle tabs mit einer verbinden.

    du hast aber einen fehelr in deriner DB struktur, du hast gegen die 2te normalisierungsform verstoßen.

    du hast redundanzen, da ja in D keine PROD_ID von nöten ist. kann es zu problemen kommen, muß aber nicht, wenn sonst alles ordnungsgemäß ist.

    Mach sonst nochmal einen Vorschlag für ne abfrage, die deiner meinung nach nicht gehen sollte.

Ähnliche Themen

  1. Join Us - Formular/ Problem mit formmailer
    Von Guest im Forum HTML & CSS Forum
    Antworten: 10
    Letzter Beitrag: 14.08.2007, 21:58
  2. Join Problem
    Von marquies im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 17
    Letzter Beitrag: 21.07.2007, 12:59
  3. Problem mit if-Abfrage
    Von Dark_Dog im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 26
    Letzter Beitrag: 01.05.2007, 17:57
  4. abfrage von daten mit PERL
    Von schaumi im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 0
    Letzter Beitrag: 17.11.2006, 12:06
  5. Abfrage eines Optionswertes mittels JS
    Von webbie im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 25.11.2004, 23:38

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •