php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.08.2004, 12:42  
Gast
 
Beiträge: n/a
Standard [Erledigt] Abfrage von drei Tabellen und Rückgabe einer ID

Tach,

ich habe eine Abfrage erstellt, die insgesamt drei Tabellen betrifft:

bewerberdaten
weiterleitungen
bewerberschriftverkehr


Jetzt soll MySQL folgendes Statement ausführen:

Code:
select
bewerberdaten.bewerbernr, bewerberdaten.vorname, ewerberdaten.nachname,
weiterleitungen.bewerbernr, weiterleitungen.vorzulegen, bewerberschreiben.bewerbernr, bewerberschreiben.vorzulegen
from
bewerberdaten, weiterleitungen, bewerberschreiben
where
bewerberdaten.vorname!='' AND bewerberdaten.nachname!=''
and weiterleitungen.vorzulegen = '1024' AND bewerberdaten.bewerbernr = weiterleitungen.bewerbernr 
OR bewerberschreiben.vorzulegen = '1024' AND bewerberdaten.bewerbernr = bewerberschreiben.bewerbernr
group by bewerberdaten.bewerbernr
Das ganze funktioniert auch, wenn ich jetzt aber mittels mysql_fetch_array mir die bewerberdaten.bewerbernr zurückgeben lassen möchte, gibt er mir nur eine bewerbernr zurück.

(der mysql_fetch_array liegt in einer for Schleife)

Code:
$daten=mysql_query($sqlquery);
$anz = mysql_num_rows($daten);
for ($i=0;$i<$anz;$i++)
{
$row = mysql_fetch_array($daten);
echo $row["bewerbernr"];
}
Wie kann ich mir die einzelnen $row["bewerbernr"] anzeigen lassen.

Much THX
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.08.2004, 13:35  
Erfahrener Benutzer
 
Registriert seit: 30.06.2004
Beiträge: 619
tapferesschneiderlein
Standard

PHP-Code:
<?php
for ($i=0$i $anz$i++) 
    { 
    
$row mysql_fetch_array($daten); 
    echo 
$row['bewerbernr']; 
    }
?>
Bei jedem Durchlauf dieser Schleife wird $row neu überschrieben, so daß Du am Ende die ID des letzten ausgelesenen Datensatzes hast. Mit
PHP-Code:
<?php
$row
[] = mysql_fetch_array($daten);
?>
erstellst Du ein Array $row, mit $row[5]['bewerbernr'] bekommst Du dann z. B. die ID des Edit: sechsten Datensatzes ...
tapferesschneiderlein ist offline   Mit Zitat antworten
Alt 26.08.2004, 08:52  
Gast
 
Beiträge: n/a
Standard

Habe das SQL Statement geändert, funktioniert aber immer noch nicht richtig

Code:
select bewerberdaten.bewerbernr, bewerberdaten.vorname, bewerberdaten.nachname, weiterleitungen.bewerbernr, weiterleitungen.vorzulegen from bewerberdaten, weiterleitungen where bewerberdaten.vorname!='' AND bewerberdaten.nachname!='' and bewerberdaten.bewerbungaufstelle='Vertriebsmitarbeiter'or weiterleitungen.vorzulegen = '1006' AND bewerberdaten.bewerbernr = weiterleitungen.bewerbernr group by bewerberdaten.bewerbernr
Hier wird also abgefragt, wer sich auf eine Stelle "Vertriebsmitarbeiter" beworben hat oder für wen eine Weiterleitung an die Personalnummer 1006 erzeugt wurde.

Wenn ich jetzt mysql_fetch_array nutze, werden aber nur die richtigen bewerbernr bei denen angezeigt, die weitergeleitet wurden.

Wenn ich meine SQL Abfrage in phpmyadmin eingebe, bekomme ich das ERgebnis

bewerbernr vorname nachname bewerbernr vorzulegen
16 Michael Schumacher 16 1006
117 Boris Becker 117 1006
142 Tiger Woods 1 1024

Woran kann das liegen?[/list]
  Mit Zitat antworten
Alt 26.08.2004, 09:05  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Davon abgesehen, wäre es eleganter, mit JOINS zu arbeiten (und weil ich etwas schreibfaul bin, verwende ich hier jetzt Aliases):
PHP-Code:
$sqlquery "SELECT d.bewerbernr, d.vorname, d.nachname, w.vorzulegen,  s.vorzulegen
    FROM bewerberdaten d
    LEFT JOIN  weiterleitungen w ON d.bewerbernr = w.bewerbernr
    LEFT  JOIN bewerberschreiben s ON d.bewerbernr = s.bewerbernr
    WHERE d.vorname != '' 
      AND d.nachname != ''
      AND (w.vorzulegen = '1024' 
           OR s.vorzulegen = '1024' )"

Ausserdem brauchst du die "bewerbernr" sicher nicht drei mal, drum hab ich sie weggelassen. Und wahrscheinlich brauchst du für die OR-Verknüpfung noch Klammern. "GROUP BY" über die "bewerbernr", d.h. den Primary Key, also über jede Zeile, kannst du auch weglassen.
Auch der PHP-Teil kann noch vereinfacht werden:
PHP-Code:
$daten=mysql_query($sqlquery) or die(mysql_error());
while(
$row mysql_fetch_array($daten))
{
    echo 
$row["bewerbernr"];

Wenn nun immer noch nur eine Nummer ausgegeben wird, so ist es sicher, dass auch nur ein Satz die entsprecheenden Bedingungen erfüllt
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 26.08.2004, 09:32  
Gast
 
Beiträge: n/a
Standard

Danke Lazydog,

vielleicht kannst du mir noch einen Tipp geben. Ich möchte eine Suchmaske erstellen, bei denen ich verschiedene Kriterien des Bewerbers abfragen kann.
Dabei sind die Tabellen

bewerberdaten
weiterleitungen


betroffen.

Dabei enthält die Tabelle bewerberdaten alle Informationen zu dem Bewerber, die Tabelle weiterleitungen ist über die id bewerbernr mit bewerberdaten verknüpft.

Dabei soll der Benutzer entscheiden können, ob er ein Kriterium definiert oder nicht.

Wie kann ich denn in der Join Abfrage weitere Kriterien mitgeben?

Ich weiß nicht, wie ich das besser erklären kann. Habe aber leider auch kein Tutorial zu Join Abfragen im I-Net gefunden, um mich weiter durch zu hangeln.
  Mit Zitat antworten
Alt 26.08.2004, 10:14  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Grundsätzlich hat das nicht primär etwas mit JOINs zu tun. Du kannst die WHERE-Bedingung ganz normal aufbauen. Natürlich musst du die entsprechenden Felder kennen. Aus deinem Formular kommen via POST z.B. die folgenden Felder: Nachname, Vorname, Jahrgang, Vorzulegen. Nun hängst du die entsprechenden Bedingungen einfach an die Abfrage ran, je nach Bedürfnis mit OR oder AND, mit "=" oder "LIKE". Bsp:
PHP-Code:
if (!empty($_POST['nachname'])
{
    
$bed[] = " LIKE '%" $_POST['nachname'] . "%'";
if (!empty(
$_POST['vorhname'])
{
    
$bed[] = " =  '" $_POST['vorname'] . "'";
}
if (!empty(
$_POST['jahrgang'])
{
    
$bed[] = " = " $_POST['jahrgang'];
}
if (!empty(
$_POST['vorzulegen'])
{
    
$bed[] = " > " $_POST['vorzulegen'];
}
$sqlquery .= ' AND (';
$sqlquery .= implode(' AND '$bed);
$sqlquery .= ')'
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 27.08.2004, 09:36  
Gast
 
Beiträge: n/a
Standard

Danke Lazydog, hast mir super weitergeholfen.

Meine Anwendung funktioniert jetzt so, wie ich es mir gewünscht habe.
  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
abfrage auf gleiche Spalten aus zwei Tabellen maeck Datenbanken 13 08.07.2008 10:09
Mysql Abfrage über zwei Tabellen mit SUM und Count abyss Datenbanken 2 12.06.2008 22:19
Abfrage mehrere Tabellen SteiniKeule Datenbanken 14 18.04.2008 19:57
abfrage über mehrere tabellen mit einer bedingung DarkThunder PHP Tipps 2007 6 15.04.2007 17:13
Abfrage über 3 Tabellen madSoul Datenbanken 5 26.06.2006 12:25
SQL ABfrage über mehrere Tabellen Madden Datenbanken 17 09.05.2006 21:19
Abfrage mehrerer Tabellen per PHP (Code vereinfachen) PHP Tipps 2007 4 18.12.2005 12:34
[Erledigt] abfrage mehrere tabellen PHP Tipps 2005-2 3 31.10.2005 21:57
Abfrage aller Tabellen über Schleife PHP Tipps 2005-2 7 22.10.2005 12:16
problem bei ausgabe einer abfrage aus 2 Tabellen Lia PHP Tipps 2005-2 2 28.07.2005 17:30
Abfrage über 3 Tabellen Datenbanken 3 20.09.2004 08:08
Abfrage zweier Tabellen funzt net richtig Datenbanken 1 17.09.2004 12:53
2 Tabellen 1 Abfrage nilsfeld Datenbanken 6 11.08.2004 11:18
Abfrage über 3 Tabellen PHP Tipps 2004 3 31.07.2004 22:34
SQL Abfrage aus mehreren Tabellen PHP Tipps 2004 7 26.07.2004 16:56

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql gleiche id über 2 tabellen mitgeben, mysql drei tabellen mit gleichen id abfragen, sql rückgabe von php abfrage, php werte aus drei tabellen abfragen, mysql abfragen ob datensatz vorhanden ist rückgabe der id, bewerberdatentabelle, bewerberschreiben, php tabellen erzeugen rückgabe, _post query kriterien

Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 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.