Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

MS-SQL - Zwei SQL Abfragen in while-Schleife verschachteln

Frage Entwicklung Datenbanken

Mitglied: kugelschreiber

kugelschreiber (Level 1) - Jetzt verbinden

23.01.2009, aktualisiert 11:25 Uhr, 9601 Aufrufe, 4 Kommentare

Hallo Ihr Lieben,

ich möchte mit PHP Tabellen aus einer MS SQL Datenbank auslesen. Dies klappt soweit ganz gut. Die Verbindung steht und ich kann Daten auslesen.

Nun habe ich folgendes Problem:

Ich habe zwei Tabellen table1 und table2
in table1 stehen Artikelnamen und Artikelnummern(einzigartig nicht mehrfach vorhanden)
art_nr, art_name
in table2 beinhaltet zu den Artikeln Kommentare, welche (und das ist das Problem) in Zeilen abgespeichert sind.

Ein Beispiel aus Tabelle table2:

art_id, zeile, kommentar
1,1,Dieser Kommentar
1,2,geht über
1,3,mehrere Zeilen

Nun lese ich aus der ersten Tabelle table1 die Artikel aus und möchte gern die Kommentare aus der table2, die zu diesem Artikel gehören mit auslesen.

Die Idee ist folgende:
01.
<? 
02.
$SQLString_artikel = "SELECT * FROM table1"
03.
$abfrage_artikel = odbtp_query($SQLString_artikel) or die
04.
while($artikel_array = odbtp_fetch_array($abfrage_artikel)){ 
05.
	echo $artikel_array['art_name']."<br>"
06.
	$SQLString_kommentar = "SELECT * FROM table2 WHERE art_nr = ".$artikel_array['art_nr']." ORDER BY zeile"
07.
	$abfrage_kommentar = odbtp_query($SQLString_kommentar) or die
08.
	while($kommentar_array = odbtp_fetch_array($abfrage_kommentar)){ 
09.
		echo $kommentar_arrray['kommentar']."<br>"
10.
11.
	echo "<hr>"
12.
13.
?>
Leider scheitert der Code mit folgender Fehlermeldung: [ODBTPERR][0]Detached object in DATEINAME on line 40, mit welcher ich nichts anfangen kann.
Scheint er "verliert" irgendwas, aber was und warum?
Line 40 ist hier im Script die Zeile, wo die erste while-Schleife anfängt:
while($artikel_array = odbtp_fetch_array($abfrage_artikel)){

Wer kann mir helfen?

Kann man die Abfrage vielleicht doch zusammenfassen?

Vielen Dank für Eure Mühe.

Gruß Kuli
Mitglied: Logan000
23.01.2009 um 11:39 Uhr
Moin Moin

Kann man die Abfrage vielleicht doch zusammenfassen?
Warum machst du nicht nur eine Abfrage mit einem Join
01.
SELECT * FROM table1 INNER JOIN table2 ON table1.art_nr = table2.art_nr
Gruß L.
Bitte warten ..
Mitglied: kugelschreiber
23.01.2009 um 11:53 Uhr
Hallo logan000,

vielen Dank für Deine Hilfe.
Dein Code
01.
> SELECT * FROM table1 INNER JOIN table2 ON table1.art_nr = 
02.
> table2.art_nr 
03.
> 
liefert mir die Abfrage auch dann den Artikelnamen, wenn keine Kommentare zu diesem in der table2 sind?
Und wenn Kommentare enthalten sind, wie rufe ich diese dann für den Artikel einzeln ab?
01.
echo $artikel_array['art_name']; 
02.
while(was?){ 
03.
 echo WAS?; 
04.
}
Kann ich die Bedingung

ON table1.art_nr=table2.art_nr

erweitern mit

ON table1.art_nr=table2.art_nr AND table2.kommentar LIKE '%string%'

VIELEN VIELEN DANK FÜR DEINE HILFE!!!
Bitte warten ..
Mitglied: Logan000
23.01.2009 um 13:03 Uhr
Moin

liefert mir die Abfrage auch dann den Artikelnamen, wenn keine Kommentare zu diesem in der table2 sind?
Es werden alle Datensätze geholt die im Feld Art_nr den gleichen Eintrag haben.
Wenn also in table1.art_nr und table2.art_nr ein identischer Eintrag vorhanden ist, das Feld "Kommentar" aber leer, wird dennoch ein Datensatz (und damit wohl auch ein Artikelname) geholt.

Und wenn Kommentare enthalten sind, wie rufe ich diese dann für den Artikel einzeln ab?
Ich behersche leider kein PHP. Aber so wie ich das sehe bläst du die Datensätze in ein Array und läst dir dann das feld ausgeben, oder nicht?
01.
	while($meinArray = odbtp_fetch_array($meinSqlStatement)){  
02.
		echo $MeinFeldwert['Feldname']."<br>";  
03.
	} 
Kann ich die Bedingung
ON table1.art_nr=table2.art_nr
erweitern mit
ON table1.art_nr=table2.art_nr AND table2.kommentar LIKE '%string%'
Solte schon gehen aber sinniger wäre es im "ONPart" nur die Verknüpfungsbedingung zwischen den beiden Tabellen zu behandeln und das Filtern nach einem bestimmten Kommentar im WHERE zu machen.
Etwa so:
01.
SELECT * FROM table1 INNER JOIN table2 ON table1.art_nr = table2.art_nr WHERE table2.kommentar LIKE '%string%'
Gruß L.
Bitte warten ..
Mitglied: kugelschreiber
23.01.2009 um 13:37 Uhr
Super das klingt doch mal schon nach was.
Ich werde es am WE probieren und noch mal Bescheid geben.

Dank Dir vielmaß!!!

Gruß und schönes WE.

Kuli
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MS SQL - Zwei Summierungen (für Vergleich) in einer Abfrage möglich?
gelöst Frage von BluejetDatenbanken3 Kommentare

Hallo zusammen, es ist sicher ein einfaches Unterfangen, jedoch weiß ich nicht, wie ich es im Moment lösen soll ...

Datenbanken
Schleifen in SQL-Abfrage bei 2 Tabellen
gelöst Frage von AximandDatenbanken2 Kommentare

Hallo, ich hab mal wieder als totaler SQL-Anfänger ein Problemchen bei dem ich mir die Haare raufe. Ich habe ...

PHP
Abfrage SQL
gelöst Frage von dudeldoedelPHP3 Kommentare

Hallo zusammen, kann man das in einer SQL Abfrage erreichen ??? Feldwert lautet: {"565":{"textinput":{"comment":"1400"}}} als Ergebnis soll ausgelesen werden ...

Datenbanken
SQL - Problem mit Cursor und Schleife
Frage von BadFsaadKlDatenbanken

Hallo zusammen, ich habe ein Problem, eine SQL Abfrage funktionstüchtig zu bekommen. Entweder denke ich zu kompliziert, oder ich ...

Neue Wissensbeiträge
Windows 10

Windows 10 Hello-Anmeldung per Foto ausgehebelt

Tipp von kgborn vor 3 StundenWindows 10

Windows Hello ist eine Funktion, um sich per Fingerabdruck-, Gesichts- oder Iriserkennung bei Windows 10-Geräten anzumelden (siehe), setzt aber ...

Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 11 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 11 StundenSicherheit1 Kommentar

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1012 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Heiß diskutierte Inhalte
Windows Server
SCCM 2016: PXE Boot des Clients schlägt fehl
Frage von gabeBUWindows Server23 Kommentare

Hallo Zusammen Ich habe eine Testumgebung erstellt um über SCCM 2016 einen virtuellen Client aufzusetzen. Folgende Maschinen habe ich ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen19 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Exchange Server
Exchange empfängt Emails - Kann aber keine Senden
gelöst Frage von niklasschaeferExchange Server11 Kommentare

Hallo, ich stehe gerade bei mir zuhause vor folgender Problemstellung. Gegeben sind 2x Hyper-V Host mit Windows Server 2016 ...